在HTTP路由中使用thread.join()

2024-06-16 11:24:23 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在编写一个服务器,用于使用Flask将渲染图像发送到客户端(浏览器)。由于图像可能还没有准备好(仍在渲染),因此我编写了以下代码以等待渲染线程完成

@app_autoView.route("/autoviewimgs/<origin>/<identifier>")
def autoviewimgs(origin, identifier):
    if identifier in renderThreads:
        renderThreads[identifier].join()
    return flask.send_from_directory(f'./latentspace/autoview/{origin}', identifier + '.png')

然而,整个服务器似乎开始等待一个线程,而所有其他HTTP请求都被阻止

我不知道python线程是否适用于Flask或其他实现方法

我尝试了@ParthS007建议的芹菜,但服务器仍然被阻止,如以下代码所示:

@app_autoView.route("/autoviewimgs/<origin>/<identifier>")
def autoviewimgs(origin, identifier):
    if identifier in renderThreads:
        if not renderThreads[identifier].ready():
            casename = renderThreads[identifier].get()
    return flask.send_from_directory(f'./latentspace/autoview/{origin}', identifier + '.png')

Tags: 代码in图像服务器appflaskifdef
1条回答
网友
1楼 · 发布于 2024-06-16 11:24:23

听起来像是,你试图从用户那里接收一个请求,然后让应用程序使用线程。为此,可以使用类似于celery的方法将任务分配给工作线程

Flask中阅读有关设计的更多信息

相关问题 更多 >