【问题标题】:Django returning from request and running task in backgroundDjango从请求返回并在后台运行任务
【发布时间】:2014-09-25 18:25:06
【问题描述】:

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

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

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

【问题讨论】:

  • 看起来像celery这样的任务队列的一个很好的用例

标签: django cron request


【解决方案1】:

很有可能,也是celery 的理想人选。

您可能还想查看redis 的经纪人。

从您的角度来看,您可以添加一个任务并让它立即异步执行,然后返回一个带有“现在正在发生”消息或您喜欢的任何内容的 Http 响应。

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

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

【讨论】:

    猜你喜欢
    • 2015-07-10
    • 2016-10-08
    • 2017-03-05
    • 1970-01-01
    • 2020-08-10
    • 2016-09-19
    • 2020-09-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多