Python Flask后台线程不工作,任务代码未执行问题排查
问题根因
你创建Thread对象时参数传递错误,将需要执行的后台任务函数传给了name参数,核心的target参数传值为None,线程启动后没有可执行的逻辑,自然不会有任何运行记录。
错误代码行如下:
task = Thread(group=None, target=None,name=Order66.main, args=(stringpart,url,sper_year,email), daemon=True)
修复方案
将目标函数放到target参数位置即可,不需要的参数可直接省略使用默认值,修改后代码如下:
task = Thread(target=Order66.main, args=(stringpart,url,sper_year,email), daemon=True)
额外优化建议
- 你已经设置线程为守护线程,当Flask主进程退出时未执行完的守护线程会被强制终止,如果是用Flask自带开发服务器调试,开启debug模式时会默认启动双进程,可能出现任务重复执行、意外终止的问题。
- 后台线程内的异常默认不会输出到主线程控制台,建议在
Order66.main入口添加异常捕获逻辑,打印异常信息方便后续排查。 - 你的代码中已经导入了Celery,后续可以直接迁移到Celery任务队列,相比原生线程更稳定,也能避免WSGI服务器多worker部署时线程被意外回收的问题。
内容的提问来源于stack exchange,提问作者ThunderSpark
相关产品推荐
相关产品推荐

