我有一个非常简单的问题,但是我没有找到一个非常简单的答案:我应该何时使用start_background_task()代替“正常”启动Python线程? Flask-SocketIO文档指出:
此函数返回与Python标准库中的Thread类兼容的对象。此函数已经调用了该对象上的start()方法。
在threading
模块的初始化和启动线程过程中,是否有必要使用此方法并没有太多说明。
答案 0 :(得分:2)
存在start_background_task()
的原因是,取决于使用哪种Web服务器,线程模型会发生变化。例如,如果您使用的是eventlet或gevent,则后台任务需要以greenlet(而不是Thread
实例)的形式启动。
如果您使用start_background_task()
,则可以保证将使用与您的环境兼容的任务对象。