Gunicorn:多个后台工作线程

问题描述 投票:0回答:1

Setup:我的应用程序使用多个工作程序来并行处理元素。处理这些元素会占用大量CPU,因此我需要辅助进程。该应用程序将通过Flask API和GUnicorn使用。 GUnicorn本身具有多个工作进程来并行处理请求。在Flask API中,请求数据被放入队列中,而我的后台应用程序的工作进程从该队列中获取该数据。

问题:分叉工作进程非常耗时,应用程序必须满足一定的速度要求。因此,我想在应用启动时生成后台工作进程。为了避免混合结果,我需要为每个GUnicorn工作者使用n后台工作者进程。

问题:如何在施工期间确定我必须生出多少背景工,以及如何将这些工与GUnicorn工联系起来?

方法:通过导入gunicorn_config.py变量,我可以从workers中读取GUnicorn工人的数量。但是,在这一点上,我不知道GUnicorn工作进程ID。他们是否有我现在可以使用的内部ID(例如GUnicorn worker#1,...)?

python multithreading gunicorn
1个回答
0
投票

您需要知道(并考虑到)可以随时停止枪械工人(例如,由于请求处理程序崩溃或处理超时)。因此,这意味着您的特定工人对特定枪械生产过程的艰苦努力不可能是永久的。

如果您想将您的工人链接到特定的Gunicorn工人,那么每次重新启动Gunicorn工人时都应进行重新链接。

一种方法是定义自己的post_fork handler来进行连接。

[最初,您可以启动所需数量的工作程序,然后post_fork处理程序可能会“借用”(或称其为“链接”)他们到刚刚创建的工作程序。

© www.soinside.com 2019 - 2024. All rights reserved.