Django Celery apply_async 不起作用

use*_*391 5 python django django-celery

我们使用的是 django 1.10,Celery 4.1.0

我正在尝试使用 apply_async。这是任务:

from celery import Celery
app = Celery('my_app', broker='redis://127.0.0.1:6379/2')


@app.task
def add(x, y):
    print(str(x+y))
    raise status.HTTP_500_INTERNAL_SERVER_ERROR
Run Code Online (Sandbox Code Playgroud)

当使用 'delay' 调用它时,它运行 'add' 函数但不重试:

add.delay(4, 4)
Run Code Online (Sandbox Code Playgroud)

我尝试使用 'apply_async' 和 'retry' 和 'retry_policy' 运行任务,但它似乎甚至没有运行任务:

add.apply_async((4, 4),
                        retry=True,
                        retry_policy={
                                      'max_retries': 3,
                                      'interval_start': 0,
                                      'interval_step': 0.2,
                                      'interval_max': 0.2,
                        } 
                )
Run Code Online (Sandbox Code Playgroud)

我错过了什么吗?

Ric*_*lva 0

检查您是否错过了proj/proj/__init__.py上的配置,如Celery 文档中所述

该文件必须具有:

from __future__ import absolute_import, unicode_literals

# This will make sure the app is always imported when
# Django starts so that shared_task will use this app.
from .celery import app as celery_app

__all__ = ('celery_app',)
Run Code Online (Sandbox Code Playgroud)

  • @user2880391 你能解释一下你是如何解决的吗?我面临着同样的问题 (8认同)