Django+Celery与定期任务集成

2024-10-04 05:22:43 发布

您现在位置:Python中文网/ 问答频道 /正文

我对如何配置Django+芹菜有点困惑。 我遵循了this guide中的报道。 这里是我要写的一堆配置:

BROKER_URL = 'amqp://...'

queue_arguments = {'x-max-length': 1}
CELERY_QUEUES = (
    Queue('queue1', routing_key='queue1', queue_arguments=queue_arguments),
    Queue('queue2', routing_key='queue2', queue_arguments=queue_arguments))

from datetime import timedelta
CELERYBEAT_SCHEDULE = {
    'task1': {
        'task': 'MyProject.tasks.this_is_task_1',
        'schedule': timedelta(seconds=1)
    },
    'task2': {
        'task': 'MyProject.tasks.this_is_task_2',
        'schedule': timedelta(seconds=1)
    }
}


CELERY_ROUTES = {
        'MyProject.tasks.this_is_task_1': {
            'queue': 'queue1',
            'routing_key': 'queue1',
        },
        'MyProject.tasks.this_is_task_2': {
            'queue': 'queue2',
            'routing_key': 'queue2',
        }
}

app = Celery('MyProject')

app.config_from_object('django.conf:settings')
app.autodiscover_tasks(lambda: settings.INSTALLED_APPS)

os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'MyProject.settings')
app = Celery('MyProject')

app.conf.update(
    CELERY_TASK_RESULT_EXPIRES=30,
    CELERY_IGNORE_RESULT=True,
)

app.config_from_object('django.conf:settings')
app.autodiscover_tasks(lambda: settings.INSTALLED_APPS)

基于1,我应该把:

  1. MyProject中的任务/任务.py在
  2. 在MyProject中创建和初始化“app”变量/芹菜.py在
  3. MyProject中的配置变量/设置.py在

如果我这样做,我会收到以下信息:

^{pr2}$

它的行为就像队列已经创建一样,但是没有任何选项。在

如果我在settings.py中只保留CELERYBEAT_时间表芹菜路线,一切似乎都在工作。事实上,队列配置被忽略,即不使用celeri_queue配置。在

谢谢


Tags: keypyapptasksettingsqueueismyproject
1条回答
网友
1楼 · 发布于 2024-10-04 05:22:43

我解决了问题。 这个问题是因为我已经创建了队列,这是不受限制的。 通过删除它们并重新启动,所有操作都非常完美: 1所有的配置设置.py 2所有的芹菜创造芹菜.py在

相关问题 更多 >