【问题标题】:how to import celery tasks in django views如何在 django 视图中导入 celery 任务
【发布时间】:2020-12-18 22:28:04
【问题描述】:

我正在用 django 学习 celery。我正在尝试使用 django 和 celery 创建一个简单的添加项目。我用 django 创建了一个简单的 webapp。在 index.html 模板中,我有一个带有 2 个输入字段的表单。第一个输入字段采用x value(加法的第一个数字)。第二个输入字段采用y value(加法的第二个数字)。提交表单后,我希望 celery 任务运行。 django项目名称为core,应用名称为mainapp

芹菜任务如下

mainapp/tasks.py

from celery import Celery
from celery.schedules import crontab
from celery import shared_task

@shared_task
def add_num(x, y):
    return x+y

core/celery.py

from __future__ import absolute_import, unicode_literals
import os
from celery import Celery

os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'core.settings')

app = Celery('core')
app.conf.timezone = 'UTC'
app.config_from_object("django.conf:settings", namespace="CELERY")
app.autodiscover_tasks()

mainapp/views.py

from django.shortcuts import render
from . import tasks

# Create your views here.
def index(request):
    if request.method == 'POST':
        x = request.POST['x']
        y = request.POST['y']

        print(x, y)

        add_num.delay(x, y)

        return render(request, 'index.html')

    return render(request, 'index.html')

我用下面的命令在后台运行 rabbitmq

brew services start rabbitmq

celery 正在使用以下命令在单独的终端窗口中运行

celery -A core worker -B -l INFO

当我提交表单时,我收到以下错误。

NameError: name 'add_num' is not defined

我想我没有正确地将任务导入views.py。

【问题讨论】:

    标签: python django celery celery-task


    【解决方案1】:

    错误的导入

    更改下一行

    from . import tasks
    

    from .tasks import add_num
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-12-27
      • 2019-07-02
      • 1970-01-01
      • 2013-08-30
      • 2019-01-07
      • 2016-08-13
      • 2015-04-22
      • 1970-01-01
      相关资源
      最近更新 更多