Django从请求返回并在后台运行任务

时间:2014-09-25 18:25:06

标签: django cron request

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

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

此外,请求超时或中断的可能性有多大?也许这是一个选项,只是不关闭标签并等待?

1 个答案:

答案 0 :(得分:1)

非常可能,是celery的好候选人。

您可能还想查看代理商的redis

从您的视图中,您可以添加一个任务并让它立即执行并异步执行,然后返回一个带有“现在正在发生这种情况”消息的Http响应或者您喜欢的任何内容。

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

更新:抱歉,重新阅读问题,您已经使用队列确认了。如果它运行10 - 20分钟,它肯定会超时。除非你增加超时或定期发回一些东西说我还在这里。就像一个json的回应。但实际上这听起来最好由任务队列处理。