首页 > 解决方案 > 从 Python 客户端延迟 Kubernetes 部署

问题描述

我有一个 Django 软件,它使用Kubernetes 官方客户端与我的 kubernetes 集群交互以进行 pod 部署。这些 pod 是 dockerized Scala SBT 应用程序,一旦我将它们全部一起启动,编译就需要很多时间。

放置一些 time.sleep() 实际上会优化发布,但它也会延迟响应.. 我必须避免这种情况。

我正在尝试了解多处理并实际上适用于测试文件,即:

import time
from multiprocessing import Pool


def test1():
    time.sleep(1)
    print("before test1: " + str(time.time()))
    time.sleep(3)
    print("after test1: " + str(time.time()))


def test2():
    print("before test2: " + str(time.time()))
    time.sleep(4)
    print("after test2: " + str(time.time()))


def main():
    print(time.time())
    pool = Pool()
    result1 = pool.apply_async(test1)
    result2 = pool.apply_async(test2)

    result1.get()
    result2.get()


main()

实际上,“after test1”和“after test2”会同时执行。但是当我将这些语句转移到需要的地方时,它会停止并行化。测试文件的结构与我需要的相同。一个带有池实例化 defs 的 def 和一个 sleep 在这些 defs 中,所有这些都在 @api_view 中。我还尝试使用其他库,如线程、异步等。在测试文件中一切正常。

我还看到我可以在 Dockerfile 中休眠,但我也看到在同一个线程中出现了一些问题。

所以我的问题是,在创建 V1Container 对象时是否可以提供某种原生设置?如何在不延迟响应时间的情况下延迟 pod 发布?

提前致谢!

编辑:我注意到即使使用测试文件,我也只会在终止操作后获得响应......即使它确实并行化了操作。也许正是不能让我延迟的响应的返回?我应该为此制作另一个 django 应用程序吗?

标签: pythondjangomultithreadingkubernetesdelayed-execution

解决方案


推荐阅读