我正在编写一个需要执行长异步任务的Django应用程序。最初的想法是从执行该工作的视图开始一个子进程,并监视另一个视图中的进度。
通过manage.py runserver
启动应用程序时,这个想法很正常,但是当它在uwsgi下运行时却没有。子进程已启动,但在视图返回后,uwsgi等待子进程结束,这打破了整个想法。
我可以在uwsgi日志中看到请求详细信息(生成的字节数等),但套接字未关闭,因此浏览器也会等待。
我已经看到了运行异步任务的其他选择,例如芹菜,但到目前为止,我花了更多的时间来配置芹菜,而不是我花在这项任务上。如果还有其他方式,我会很高兴听到你如何解决它。
答案 0 :(得分:2)
http://uwsgi-docs.readthedocs.org/en/latest/ThingsToKnow.html
- close-on-exec就是你需要的
答案 1 :(得分:0)
我找到了一个很好的选择:https://github.com/ui/django-rq,它易于安装和配置,并且可以正常工作。
但子过程的原始问题仍然不清楚。