2013-07-10 64 views
5

得到了一个简单的问题,我相信,但它让我坚持反正。Django在模型日期时间字段中指定的时间执行任务

说我有一个简单的模型:

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

,我想,说在指定的时间做一些事情:发送电子邮件,删除模式,改变一些车型领域的...东西。 django核心中是否有工具,允许我这样做?或者,如果不是的话,我认为一些任务排队工具可能是按顺序排列的。我有djcelery在我的项目中工作,尽管我是一个完全新手,并且迄今为止我能够执行的所有操作都是运行django-celery-email程序包,以便以异步方式发送我的邮件。虽然我不能说我完全有能力确定任务和工作人员在后台工作,并且可靠。

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

回答

1

我认为最好的背景任务是读取datime并在达到或已经达到日期时间时执行任务。

看到这里给出一个scheduled task

的解决方案,因此工作流程将是:

  • 创建要应用的对象,其日期已经达到
  • 创建同治命令任务检查数据库中的日期时间,并对达到日期时间的每个对象执行上述任务
  • 使用cron(Linux)或在(Windows)安排命令调用
+0

这就是我要用的,谢谢! –

-1

如果你是一个类似于UNIX的机器上,它可能是你有机会获得cronjobs。如果你在Windows上,我听说有一个名为at的程序可以做类似的事情。如果这不符合您的需求,可以使用time库(time.sleep(SOME_NUMBER_OF_SECONDS))中的任何其他任何您想要执行的操作来执行此操作,如果您需要定期执行某些操作,则可以采用多种方法每隔X小时执行一次操作,否则,你需要看看time.localtime()并检查条件)。

相关问题