说我有一个简单的模型:
class myModel(models.Model):
expires = models.DateTimeField(...)
我希望,在指定的时间说一些事情:发送电子邮件,删除模型,更改一些模型字段......某事。 django核心中是否有工具允许我这样做?
或者,如果没有,我认为某些任务排队工具可能是有序的。我有djcelery
在我的项目中工作,虽然我是一个完全新手,而我迄今为止所能执行的只是运行django-celery-email
包,以便异步发送我的邮件。虽然我不能说我完全有能力定义任务和工人在后台工作并且可靠。
如果有任何想法,关于如何解决这样的问题,请不要犹豫=)
答案 0 :(得分:4)
写一个custom management command来完成你想要的任务。完成后,您应该可以使用python manage.py yourtaskname
。
使用cron
,at
,periodic tasks in celery
,django-cron
,djangotaskscheduler
或django-future
来安排您的任务。
答案 1 :(得分:1)
我认为最好的是后台任务,如果达到或已达到日期时间,则读取datime并执行任务。
请参阅此处给出的scheduled task
解决方案所以工作流程将是:
答案 2 :(得分:-1)
如果您使用的是类似UNIX的计算机,则可能有权访问cronjobs。如果您使用的是Windows,我会听到有一个名为at
的程序可以执行类似的操作。如果这不符合您的需求,有很多方法可以使用time
库每隔X小时执行一次操作(time.sleep(SOME_NUMBER_OF_SECONDS)
在一个循环中,如果您有任何其他想做的事情,它将会执行此操作想要定期完成某些事情,否则你需要查看time.localtime()
并检查条件。