2014-09-25 84 views
1

我有一个任务需要大约10-20分钟才能执行。用户点击一个按钮来执行此操作。是否有可能从这个请求返回并继续在后台运行此任务,并在完成后发送电子邮件或其他内容。Django从请求返回并在后台运行任务

我知道我可以设置队列和cron作业,但它看起来太多了,因为只有一个用户会使用此功能。

此外,请求超时或中断的机会有多大?也许这是一个选项只是不关闭选项卡,并等待?

+0

看起来像[芹菜](http://celery.readthedocs.org/)这样的任务队列的良好用例, – 2014-09-25 18:28:12

回答

1

非常可能和celery很好的候选人。

你也可能想看看经纪人的redis

从您的观点来看,您可以添加一个任务,并立即异步执行它,然后返回一个Http响应,其中包含“现在正在发生”消息或任何您喜欢的消息。

如果您希望在保存对象时执行某些操作,您也可以使用post_savepre_save之类的信号来触发任务。

更新:对不起,重新阅读问题,您已经确认使用队列。如果运行10-20分钟,它肯定会超时。除非你增加超时时间,或者定期回复说我还在这里。就像一个JSON响应。但实际上,这听起来最适合由任务队列处理。