为什么芹菜任务不异步工作?



我正在尝试从芹菜异步运行基本debug_task,但它始终同步运行。

我用django-cookiecutter模板创建了一个新项目。

我确保 redis 正常工作并且所有 env 变量都有效。

我启动芹菜,当它准备好接收任务时,我启动控制台 (shell_plus( 并异步调用任务。

In [1]: from project.taskapp.celery import debug_task                                                                                                                                                                           
In [2]: debug_task.delay()                                                                                                                                                                                                     
Request: <Context: {'id': '87b4d96e-9708-4ab2-873e-0118b30f7a6b', 'retries': 0, 'is_eager': True, 'logfile': None, 'loglevel': 0, 'hostname': 'hostname', 'callbacks': None, 'errbacks': None, 'headers': None, 'delivery_info': {'is_eager': True}, 'args': (), 'called_directly': False, 'kwargs': {}}>
Out[2]: <EagerResult: 87b4d96e-9708-4ab2-873e-0118b30f7a6b>

如您所见,参数is_eager== True ->,因此它可以同步工作。 我也试图将任务称为debug_task.apply_async()

以下是芹菜饼干切割机模板的设置:


import os
from celery import Celery
from django.apps import apps, AppConfig
from django.conf import settings

if not settings.configured:
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'config.settings.local')  

app = Celery('project')
app.config_from_object('django.conf:settings', namespace='CELERY')

class CeleryAppConfig(AppConfig):
name = 'project.taskapp'
verbose_name = 'Celery Config'
def ready(self):
installed_apps = [app_config.name for app_config in apps.get_app_configs()]
app.autodiscover_tasks(lambda: installed_apps, force=True)

@app.task(bind=True)
def debug_task(self):
print(f'Request: {self.request!r}') 

正如许多评论者指出的那样:配置芹菜时关闭预先处理:

app = Celery('project')
app.config_from_object('django.conf:settings', namespace='CELERY')
app.conf.task_always_eager = False

相关内容

  • 没有找到相关文章

最新更新