问题描述
我正在用Django学习芹菜。我正在尝试使用django和celery创建一个简单的加法项目。我用Django创建了一个简单的webapp。在index.html模板中,我有一个带有2个输入字段的表单。第一个输入字段采用x value
(要添加的第一个数字)。第二个输入字段使用y value
(第二个要加的数字)。提交表单后,我希望运行celery任务。 django项目名称为 核心 ,应用名称为 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中。
解决方法
导入不正确
在行下更改
from . import tasks
到
from .tasks import add_num