想找到什么时候开始在芹菜工作

时间:2012-08-28 08:50:18

标签: celery celery-task celerybeat

我是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 aug 4:00PM开始,然后我应该如何配置?

1 个答案:

答案 0 :(得分:1)

您应该使用Cron而不是timedelta。 Celery文档专门讨论了这个问题,并提供了一些有用的示例。见Crontab schedules

以下是Celery的一个例子:

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),
    },
}

要使这项工作符合您的条件,您还需要指定cron month_of_year参数。