如何安排django crons?

时间:2017-10-09 14:43:58

标签: python django scheduled-tasks django-cron

我有一个用django-cron编写的cron:

from django_cron import CronJobBase, Schedule

class MyCronJob(CronJobBase):
    RUN_EVERY_MINS = 1

    schedule = Schedule(run_every_mins=RUN_EVERY_MINS)
    code = 'statuscheck.my_cron_job'

    def do(self):
       print ("hello")

它有效,就像命令python manage.py runcrons连续运行两次一样,只提供一个输出,除非1分钟已经失效

我的问题是,我如何安排该命令例如每周执行3次?

谢谢

2 个答案:

答案 0 :(得分:1)

只需改变分钟数,假设一小时60分钟,一天24小时,一周7天,您可以执行以下操作:

RUN_EVERY_MINS = 60 * 24 * 7 / 3 # three times a week

关于评论中提到的问题,我认为您应该使用CRON。

https://en.wikipedia.org/wiki/Cron

您可以在/etc/crontab中添加此行(通过实际路径替换/path/to):

* * * * * cd /path/to/manage.py && /usr/bin/python manage.py runcrons

这将每分钟运行一次脚本。

注意,你不会看到"你好"在您的终端会议上。如果要查看CRON输出,可以将其重定向到文件:

* * * * * cd /path/to/manage.py && /usr/bin/python manage.py runcrons >> /tmp/django_cron.log

答案 1 :(得分:0)

  1. crontab要做的一件事是使用django celery。
  2. 在celery_config.py中进行设置,在此文件中写入所有配置设置 示例:

    从celery.schedules导入crontab CELERY_BEAT_SCHEDULE = CELERY_BEAT_SCHEDULE = { “客户端获取新消息的电子邮件”:{     '任务':'apps.app_name.tasks.send_email',     “时间表”:crontab(minute =“ *”) }, }

  3. 最后的配置settings.py文件

    INSTALLED_APPS =( 'django_celery_results', 'django_celery_beat' )