3

我正在编写一个 Django 应用程序,它需要执行长时间的异步任务。最初的想法是从执行该工作的视图开始一个子流程,并在另一个视图中监视进度。

当应用程序通过 启动时,这个想法很有效manage.py runserver,但在 uwsgi 下运行时就不行了。子进程启动了,但是视图返回后uwsgi等待子进程结束,这就打破了整个思路。

我可以在 uwsgi 日志中看到请求的详细信息(生成的字节数等),但是套接字没有关闭,所以浏览器也在等待。

我已经看到了运行异步任务的其他替代方案,例如 celery,但到目前为止,我尝试配置 celery 的时间比我为该任务花费的时间还多。如果有任何其他方法,我会很高兴听到你如何解决它。

4

2 回答 2

3

http://uwsgi-docs.readthedocs.org/en/latest/ThingsToKnow.html

--close-on-exec 是你需要的

于 2013-07-12T04:59:10.157 回答
0

我找到了一个不错的选择:https ://github.com/ui/django-rq ,它易于安装和配置,并且可以正确完成工作。

不过,子流程的原始问题仍不清楚。

于 2013-07-11T16:16:48.923 回答