【问题标题】:Running gunicorn with threading使用线程运行 gunicorn
【发布时间】:2020-04-22 23:34:47
【问题描述】:

我正在使用 Flask/Gunicorn 和 Nginx 构建服务器。我的脚本(Flask 服务器)使用“线程”做两件事:

  1. 连接到 MQTT 代理
  2. 运行烧瓶服务器

但是当我尝试使用 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】:

    Gunicorn 基于 pre-fork worker 模型。这意味着当它启动时,它有一个主进程并在必要时产生工作进程。很可能第一个线程确实运行了,但您在其他 prefork 进程中忘记了它。

    如果您想要一个后台线程,flask 控制器可以与之交互并共享内存,gunicorn 不太可能是您的理想解决方案。

    【讨论】:

    • 您会推荐哪种解决方案? uWSGI?
    猜你喜欢
    • 2016-06-20
    • 2022-01-15
    • 2022-01-18
    • 2014-01-18
    • 2021-11-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-23
    相关资源
    最近更新 更多