如何在 Django 视图中导入芹菜任务
how to import celery tasks in django views
我正在用 django 学习芹菜。我正在尝试使用 django 和 celery 创建一个简单的附加项目。我用 django 创建了一个简单的 webapp。在 index.html 模板中,我有一个包含 2 个输入字段的表单。第一个输入字段采用 x value
(加法的第一个数字)。第二个输入字段采用 y value
(加法的第二个数字)。提交表单时,我希望 celery 任务为 运行。 django 项目名称是 core 应用程序名称是 mainapp
celery任务如下
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 运行ning
brew services start rabbitmq
celery 运行在单独的终端 window 中使用以下命令
celery -A core worker -B -l INFO
提交表单时出现以下错误。
NameError: name 'add_num' is not defined
我想我没有正确地将任务导入 views.py。
导入不正确
更改以下行
from . import tasks
至
from .tasks import add_num
我正在用 django 学习芹菜。我正在尝试使用 django 和 celery 创建一个简单的附加项目。我用 django 创建了一个简单的 webapp。在 index.html 模板中,我有一个包含 2 个输入字段的表单。第一个输入字段采用 x value
(加法的第一个数字)。第二个输入字段采用 y value
(加法的第二个数字)。提交表单时,我希望 celery 任务为 运行。 django 项目名称是 core 应用程序名称是 mainapp
celery任务如下
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 运行ning
brew services start rabbitmq
celery 运行在单独的终端 window 中使用以下命令
celery -A core worker -B -l INFO
提交表单时出现以下错误。
NameError: name 'add_num' is not defined
我想我没有正确地将任务导入 views.py。
导入不正确
更改以下行
from . import tasks
至
from .tasks import add_num