奔跑的炮仗与穿线

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

我正在用FlaskGunicorn和Nginx搭建一个服务器。我的脚本(Flask服务器)用 "线程 "做了两件事。

  1. 连接到MQTT代理
  2. 运行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()

请帮助我,我必须尽快找到解决方案!谢谢!

flask server gunicorn
1个回答
0
投票

Gunicorn是基于预分叉工人模型的。这意味着,当它启动时,它有一个主进程,并在必要的情况下,衍生出工人进程。很可能第一个线程确实运行了,但你在其他预分叉进程中失去了跟踪。

如果你想有一个后台线程,烧瓶控制器可以与之交互并共享内存,那么gunicorn不太可能是你的一个好的解决方案。

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