Python uWSGI&x2B;烧瓶+;拥有多进程?
我用uWSGI运行一个flask服务器。 该过程由systemd启动 现在我需要一些以“while(True)”运行的子流程,它们必须始终收集一些信息 我现在开始使用多处理的子流程 下面是我的一些代码:Python uWSGI&x2B;烧瓶+;拥有多进程?,python,flask,multiprocessing,uwsgi,Python,Flask,Multiprocessing,Uwsgi,我用uWSGI运行一个flask服务器。 该过程由systemd启动 现在我需要一些以“while(True)”运行的子流程,它们必须始终收集一些信息 我现在开始使用多处理的子流程 下面是我的一些代码: from multiprocessing import Process, Value def start_flask_server(): daemon_data = Value('d', 0.0) p = Process(target=worker, args=(daemon_d
from multiprocessing import Process, Value
def start_flask_server():
daemon_data = Value('d', 0.0)
p = Process(target=worker, args=(daemon_data, 1))
p.daemon=True
p.start()
然后我用systemd重新启动/停止uWSGI,进程阻塞,当然它不受SIG影响
我的第一个想法是实现一个信号句柄:
for i in [x for x in dir(signal) if x.startswith("SIG")]:
try:
signum = getattr(signal,i)
signal.signal(signum, signal_term_handler)
app.logger.debug("Added Handler SIG: %s"%i)
except Exception as e:
app.logger.error(e)
app.logger.error("Skipping %s"%i)
但不幸的是,他们没有点火
如果服务器即将关闭,是否会触发事件,或者我可以在应用程序中启动一个uWSGI“worker”来完成此项工作?我有两个反建议:
我不太明白你的设置。您是否从flask应用程序创建这些流程?他们来自完全不同的剧本吗?为什么你命名这个函数为
start\u flask\u server
,那些工人在启动flask应用程序吗?对,是工人在启动flask应用程序。我有一个uwsgi服务,可以启动这个。我现在只需要一个新的工作者、线程或另一个进程(可以与我的flask应用程序通信)就可以一直做一些事情。然后,我的flask应用程序应该能够询问该进程的最后状态。