【问题标题】:Celery periodic tasks once in 2 weeks芹菜周期任务2周一次
【发布时间】:2018-03-11 04:57:17
【问题描述】:

我无法将 Celery 的定期任务设置为每两周在周日晚上运行一次。有谁知道如何使用 day_of_month day_of_week 选项进行配置?

【问题讨论】:

    标签: python django celery periodic-task


    【解决方案1】:

    据我所知,仅使用 crontab 无法做到这一点

    首先,让您的任务在每个星期天晚上运行:

    crontab(minute=0, hour=0, day_of_week='sunday')
    

    然后,在你的任务函数中,检查周数是否为偶数,如果是,则什么也不做:

    from datetime import datetime
    
    week_number = int(datetime.today().strftime("%U"))    
    if week_number % 2 == 0:
        return
    

    【讨论】:

    • 还有一个问题,任务执行多次的原因是什么?我将它设置为分钟,但它一直被执行数百次
    • @Ken 恐怕我得看看你的设置。
    • ` CELERY_TASK_ALWAYS_EAGER = False CELERY_BROKER_URL = os.environ.get('REDIS_URL') CELERY_RESULT_BACKEND = os.environ.get('REDIS_URL') CELERY_ACCEPT_CONTENT = ['application/json'] CELERY_TASK_SERIALIZER = 'json' CELERY_RESULT_SERIALIZER = 'json' CELERY_ENABLE_UTC = False CELERY_TIMEZONE = TIME_ZONE `
    • @Ken 我的意思是你的周期性任务设置:)
    • 对不起,我是这里的菜鸟。我无法正确格式化评论。任务的配置附加到任务的定义中。这里@periodic_task(run_every=(crontab(minute=19, hour=11, day_of_week='friday')), name='Расчет отчета партнеров', # ignore_result=True )
    猜你喜欢
    • 2016-08-18
    • 2015-04-11
    • 2018-04-05
    • 1970-01-01
    • 1970-01-01
    • 2019-02-20
    • 1970-01-01
    • 2016-10-20
    • 2015-10-23
    相关资源
    最近更新 更多