我做出了一个管理命令,该命令从csv文件填充了我的一个模型。 我需要经常进行此更新,并且csv文件有成千上万的行。 有时可能需要10分钟以上才能完成填充。
我想添加一个功能,使我可以直接通过网站上传csv文件,并且在文件上传后,django应该运行该命令或至少运行其中的逻辑,然后填充数据库。
我将如何处理?我希望能够在上传文件后离开页面,并在任务完成后收到一封电子邮件。
你可以使用Django Background Task进行相同的操作。它是Django的数据库支持的工作队列。并且比Celery易于实施。
from background_task import background @background(schedule=60) def your_task(): # do your cool work here.
这会将转换your_task为后台任务功能。当你从常规代码调用它时,它将实际上创建一个Task对象并将其存储在数据库中。
your_task