【问题标题】:Celery KeyError when i try to execute task当我尝试执行任务时出现 Celery KeyError
【发布时间】:2018-08-11 16:34:00
【问题描述】:

按照“使用 Celery 的第一步” 我有以下结构:

芹菜_

  • 配置
    • celery.py
    • celeryconfig.py
  • 任务
    • tasks.py
  • run_tasks.py

celery.py:

from celery import Celery
from config import celeryconfig
app = Celery('tasks', backend='rpc://', broker='pyamqp://')
app.config_from_object(celeryconfig)

celeryconfig.py

broker_url = 'pyamqp://'
result_backend = 'rpc://'
task_serializer = 'json'
result_serializer = 'json'
accept_content = ['json']
timezone = 'Europe/Oslo'
enable_utc = True

task_routes = {
'tasks.add': 'low-priority',
}
task_annotations = {
   'tasks.add': {'rate_limit': '10/m'}
}

tasks.py:

from config.celery import app


@app.task
def add(x, y):
return x + y

run_tasks.py:

from tasks.tasks import add
res = add.delay(4,4)
a = res.get()
print(a)

这是一个很简单的配置,但是当我运行run_tasks.py时,控制台显示错误:

.... Traceback(最近的最后一次调用): 文件“/usr/lib/python3/dist-packages/celery/worker/consumer.py”,行 456,在 on_task_received 策略 [名称](消息、正文、 KeyError:'tasks.tasks.add'

请帮帮我。怎么了?

【问题讨论】:

    标签: python python-3.x celery


    【解决方案1】:

    你需要在 celery.py 中导入你的任务

    from celery import Celery
    from config import celeryconfig
    app = Celery('tasks.tasks', backend='rpc://', broker='pyamqp://')
    app.config_from_object(celeryconfig)
    import tasks.tasks
    

    【讨论】:

    • 非常感谢。但我还有一个问题。在 celeryconfig.py 文件中,我声明了添加任务的时间限制:'task_annotations = { 'tasks.tasks.add': {'rate_limit': '10 / m '} } '。但是我可以根据需要多次执行该任务。有什么问题?
    猜你喜欢
    • 2020-09-28
    • 2012-03-15
    • 2017-11-14
    • 2011-09-03
    • 2021-08-26
    • 1970-01-01
    • 2022-10-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多