Django的定制表彰+ cron作业

问题描述:

我有自定义称道:Django的定制表彰+ cron作业

python manage.py checksomething 

如何运行这每两个小时?

我看到的Django的cron:

#example from doc 
from django_cron import cronScheduler, Job 

from MyMailFunctions import check_feedback_mailbox 

class CheckMail(Job): 
     # run every 300 seconds (5 minutes) 
     run_every = 300 

     def job(self): 
       # This will be executed every 5 minutes 
       check_feedback_mailbox() 

cronScheduler.register(CheckMail) 

但怎么办好呢?它会自动打开?我有在服务器上设置的东西吗?这个文件应该在哪里? (在什么文件夹中?)

+0

哪个系统上你的主机应用程序? –

+0

@LukaszKoziara Linux – mamasi

使用crontab,其使用

编辑你的crontab很简单:

$ crontab -e 

,并添加你的工作:

* */2 * * * python /path/to/project/manage.py checksomething 
+1

如果你正在使用这种方法,那么如果你的Django被配置为使用virtualenv(它可能应该是这样),你需要小心。在这种情况下,我发现让cronjob运行一个在调用custom management命令之前激活virtualenv的shell脚本是最简单的。 – Roarster

与django_cron的想法是设置一个作业,该作业将在项目中每X秒运行一次。

您创建作业(在您的示例中为CheckMail函数)并设置其周期(run_every = 300,这意味着每300秒= 5分钟)。

设置作业后,使用cronScheduler.register(CheckMail)注册作业。

为了使工作运行你url.py需要添加以下每5分钟:

import django_cron 
django_cron.autodiscover() 

这样做,这将使django_cron活跃,你的工作将开始每5分钟。

这是一个更好的方法,然后从脚本中调用manage.py checksomthing。这样你的django项目将在你的django项目中运行自己的工作,并且不会依赖于正在运行的脚本。