一尘不染

通知Django运行任务

django

我做出了一个管理命令,该命令从csv文件填充了我的一个模型。
我需要经常进行此更新,并且csv文件有成千上万的行。
有时可能需要10分钟以上才能完成填充。

我想添加一个功能,使我可以直接通过网站上传csv文件,并且在文件上传后,django应该运行该命令或至少运行其中的逻辑,然后填充数据库。

我将如何处理?我希望能够在上传文件后离开页面,并在任务完成后收到一封电子邮件。


阅读 433

收藏
2020-04-03

共1个答案

一尘不染

你可以使用Django Background Task进行相同的操作。它是Django的数据库支持的工作队列。并且比Celery易于实施。

from background_task import background
@background(schedule=60)
def your_task():
    # do your cool work here.

这会将转换your_task为后台任务功能。当你从常规代码调用它时,它将实际上创建一个Task对象并将其存储在数据库中。

2020-04-03