django + celery - 如何在我的django应用程序中为芹菜设置crontab计划?

 中国人TM 发布于 2023-01-12 18:26

我按照这里的说明操作:

http://celery.readthedocs.org/en/latest/userguide/periodic-tasks.html#crontab-schedules

我应该能够做到以下几点: from celery.schedules import crontab

在我的settings.py身上:

from kombu import serialization
serialization.registry._decoders.pop("application/x-python-serialize")
import djcelery
djcelery.setup_loader()
from celery.schedules import crontab

...

CELERYBEAT_SCHEDULE = {
    'first_task': {
        'task': 'apps.icecream.tasks.sync_flavors',
        'schedule': crontab(minute='*/30', hour='1, 3, 6, 8-20, 22')
    },
    'second_task': {
        'task': 'apps.robots.tasks.run_robots',
        'schedule': crontab(minute='*/6')
    }
}

但是,我收到一个错误:"没有名为schedules的模块"

如果我切换到另一种调度方式,使用timedelta,那么一切都很好,我可以运行我的周期性任务:

CELERYBEAT_SCHEDULE = {
    'first_task': {
        'task': 'apps.icecream.tasks.sync_flavors',
        'schedule': timedelta(minutes=30)
    },
    'second_task': {
        'task': 'apps.robots.tasks.run_robots',
        'schedule': timedelta(minutes=6)
    }
}

为什么我不能使用crontab方法?

1 个回答
  • 发生这种情况是因为您celery.py在与您相同的包中有一个文件settings.py,它会影响全局celery包.

    要解决此问题,请在settings.py的开头插入以下字符串:

    from __future__ import absolute_import
    

    希望能帮助到你!

    2023-01-12 18:27 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有