我正在用FlaskGunicorn和Nginx搭建一个服务器。我的脚本(Flask服务器)用 "线程 "做了两件事。
但当我尝试使用gunicorn时 gunicorn --bind 0.0.0.0:5000 wsgi:app,第一个线程没有运行。
下面是代码(不完整)。
import threading
def run_mqtt():
while True:
mqtt_client.connect(mqtt_server, port=mqtt_port)
def run_server():
app.run(host='0.0.0.0', port=5000, debug=False)
if __name__ == '__main__':
t1 = threading.Thread(target=run_mqtt)
t2 = threading.Thread(target=run_server)
t1.daemon = True
t2.daemon = True
t1.start()
t2.start()
请帮助我,我必须尽快找到解决方案!谢谢!
Gunicorn是基于预分叉工人模型的。这意味着,当它启动时,它有一个主进程,并在必要的情况下,衍生出工人进程。很可能第一个线程确实运行了,但你在其他预分叉进程中失去了跟踪。
如果你想有一个后台线程,烧瓶控制器可以与之交互并共享内存,那么gunicorn不太可能是你的一个好的解决方案。