Flask-SocketIO 中的后台任务

sta*_*264 3 python multithreading flask flask-socketio

我有一个非常简单的问题,但我还没有\xe2\x80\x99t找到一个非常简单的答案:何时应该使用start_background_task()而不是启动Python线程\xe2\x80\x9cnormally\xe2\x80\x9d?Flask-SocketIO 文档指出:

\n\n
\n

该函数返回一个与Python标准库中的Thread类兼容的对象。该函数已调用该对象的 start() 方法。

\n
\n\n

它并没有过多说明是否有必要在初始化和启动每个模块的线程时使用它threading

\n

Mig*_*uel 7

存在的原因start_background_task()是,根据您使用的 Web 服务器,线程模型会发生变化。例如,如果您使用的是 eventlet 或 gevent,则后台任务需要作为 greenlet 启动,而不是作为实例启动Thread

如果您使用,start_background_task()将保证使用与您的环境兼容的任务对象。