我有一个用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次?
谢谢
答案 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)
在celery_config.py中进行设置,在此文件中写入所有配置设置 示例:
从celery.schedules导入crontab CELERY_BEAT_SCHEDULE = CELERY_BEAT_SCHEDULE = { “客户端获取新消息的电子邮件”:{ '任务':'apps.app_name.tasks.send_email', “时间表”:crontab(minute =“ *”) }, }
最后的配置settings.py文件
INSTALLED_APPS =( 'django_celery_results', 'django_celery_beat' )