2

我有一个使用 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 次?

谢谢

4

2 回答 2

2

只需更改分钟数,假设一小时有 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

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

请注意,您不会在终端会话中看到“hello”。如果您想查看 CRON 输出,可以将其重定向到文件:

* * * * * cd /path/to/manage.py && /usr/bin/python manage.py runcrons >> /tmp/django_cron.log
于 2017-10-09T14:49:01.647 回答
-2
  1. crontab 要做的一件事是使用 django celery。
  2. 在 celery_config.py 中进行设置,将所有配置设置写入此文件示例:

    从 celery.schedules 导入 crontab CELERY_BEAT_SCHEDULE = CELERY_BEAT_SCHEDULE = { 'client-gets-email-on-new-message': { 'task': 'apps.app_name.tasks.send_email', 'schedule': crontab(minute="* ") }, }

  3. 最后配置settings.py文件

    INSTALLED_APPS = ('django_celery_results', 'django_celery_beat')

于 2019-09-20T06:59:37.257 回答