6

我相信有一个简单的问题,但无论如何它让我陷入困境。

假设我有一个简单的模型:

class myModel(models.Model):
    expires = models.DateTimeField(...)

我想,说在指定的时间做某事:发送电子邮件,删除模型,更改一些模型字段......某事。django core 中是否有工具允许我这样做?

或者,如果不是,我认为一些任务排队工具可能是有序的。我djcelery在我的项目中工作,虽然我是一个完全新手,到目前为止我所能做的就是运行django-celery-email包,以便异步发送我的邮件。虽然我不能说我完全有能力定义任务和工人在后台工作并且是可靠的。

如果有任何想法,关于如何解决这个问题,请不要犹豫=)

4

3 回答 3

4
  1. 编写自定义管理命令来完成您想要的任务。完成后,您应该能够使用python manage.py yourtaskname.

  2. 在、或中使用cronat定期任务celery来安排您的任务。django-crondjangotaskschedulerdjango-future

于 2013-07-10T11:28:16.737 回答
1

我认为最好的是后台任务,它读取日期时间并在达到或已经达到日期时间时执行任务。

请参阅此处为计划任务提供的解决方案

所以工作流程是:

  • 创建要应用于已到日期的对象的任务
  • 创建一个检查数据库中日期时间的管理命令,并为每个已达到日期时间的对象执行上述任务
  • 使用 cron (Linux) 或 at(Windows) 来安排命令调用
于 2013-07-10T11:20:08.527 回答
-2

如果您在类似 UNIX 的机器上,您可能可以访问cronjobs。如果你在 Windows 上,我听说有一个叫做at可以做类似事情的程序。如果这不符合您的需求,则有多种方法可以使用该time库每 X 小时执行一次操作(time.sleep(SOME_NUMBER_OF_SECONDS)如果您想定期完成某些事情,那么您想做的任何其他事情都会循环执行,否则您将需要查看time.localtime()和检查条件)。

于 2013-07-10T11:12:09.283 回答