0

我是新手celery。我有一些配置celeryconfig.py如下:

from datetime import timedelta

BROKER_URL='redis://localhost:6379/0'
CELERY_RESULT_BACKEND="redis"
CELERY_REDIS_HOST="localhost"
CELERY_REDIS_PORT=6379
CELERY_REDIS_DB=0
CELERY_IMPORT=("mail")

CELERYBEAT_SCHEDULE={'runs-every-30-seconds' :
                        {
                                'task': 'mail.mail',
                                'schedule': timedelta(seconds=30),
                        },
                    }

我已安排作业将在 30 秒内定期运行。现在我希望工作应该从那时开始29 aug4:00PM应该如何配置它?

4

1 回答 1

1

您应该使用 Cron 而不是 timedelta。Celery 文档专门讨论了这一点,并提供了一些有用的示例。请参阅Crontab 计划

这是芹菜的一个例子:

from celery.schedules import crontab

CELERYBEAT_SCHEDULE = {
    # Executes every Monday morning at 7:30 A.M
    'every-monday-morning': {
        'task': 'tasks.add',
        'schedule': crontab(hour=7, minute=30, day_of_week=1),
        'args': (16, 16),
    },
}

要使其适合您的条件,您还需要指定 cronmonth_of_year参数。

于 2012-08-29T04:03:49.733 回答