美文网首页
celery 计划任务

celery 计划任务

作者: NoFacePeace | 来源:发表于2017-11-11 11:41 被阅读0次

Scheduler

一种常见的需求是每隔一段时间执行一个任务.配置如下:
config.py

#!/usr/bin/env python
# -*- coding:utf-8 -*-

from __future__ import absolute_import

CELERY_RESULT_BACKEND = 'redis://127.0.0.1:6379/5'
BROKER_URL = 'redis://127.0.0.1:6379/6'

CELERY_TIMEZONE = 'Asia/Shanghai'

from datetime import timedelta

CELERYBEAT_SCHEDULE = {
    'add-every-30-seconds': {
         'task': 'proj.tasks.add',
         'schedule': timedelta(seconds=30),
         'args': (16, 16)
    },
}

注意配置文件需要指定时区.这段代码表示每隔30秒执行add函数.
一旦使用了scheduler,启动celery需要加上-B参数

celery -A proj worker -B -l info

crontab

计划任务当然也可以用crontab实现,celery也有crontab模式,修改config.py

#!/usr/bin/env python
# -*- coding:utf-8 -*-

from __future__ import absolute_import

CELERY_RESULT_BACKEND = 'redis://127.0.0.1:6379/5'
BROKER_URL = 'redis://127.0.0.1:6379/6'

CELERY_TIMEZONE = 'Asia/Shanghai'

from celery.schedules import crontab

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

总而言之,scheduler的切分度更细,可以精确到秒.crontab模式就不用说了.当然celery还有更高级的用法,比如多个机器使用,启动多个worker并发处理等.

相关文章

网友评论

      本文标题:celery 计划任务

      本文链接:https://www.haomeiwen.com/subject/ebywmxtx.html