DJANGO 芹菜任务是从 shell 执行的,但不是从视图执行的
DJANGO celery task is executed from shell but it's not executed from view
我正在尝试在我的 django 应用程序中使用 celery 创建一些异步任务
settings.py
BROKER_URL = 'django://localhost:6379/0'
CELERY_ACCEPT_CONTENT = ['json']
CELERY_TASK_SERIALIZER = 'json'
CELERY_RESULT_SERIALIZER = 'json'
celery.py:
from __future__ import absolute_import
import os
from celery import Celery
from django.conf import settings
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'provcon.settings')
app = Celery('provcon')
app.config_from_object('django.conf:settings')
app.autodiscover_tasks(lambda: settings.INSTALLED_APPS)
项目__init__py:
from __future__ import absolute_import
from .celery import app as celery_app
tasks.py:
from __future__ import absolute_import
from celery import shared_task
from celery import task
from .models import Proc_Carga
@task()
def carga_ftp():
tabla = Proc_Carga()
sp = tabla.carga()
return None
我这样调用异步任务:
from .tasks import carga_ftp
@login_required(login_url='/login/')
def archivoview(request):
usuario= request.user
if request.method == 'POST':
form = ProcFTPForm(usuario,request.POST)
if form.is_valid():
form.save()
proc = Lista_Final()
lista = proc.archivos()
# call asynchronous task
carga_ftp.delay()
return HttpResponseRedirect('/resumen/')
else:
form = ProcFTPForm(usuario)
return render_to_response('archivo.html',{'form':form},context_instance=RequestContext(request))
当我运行任务来自pythonmanage.pyshell。 worker 被执行并创建数据库对象没有任何问题
但是当我尝试从视图中执行任务时,不工作不执行
知道为什么任务 运行 来自 manage.py shell 而不是来自视图
提前致谢
检查redis是否运行ning
$redis-cli ping
在 django 管理界面中检查 celery worker 是否 运行ning
如果没有运行宁执行这个命令
celery -A provcon worker -l info
从您的 Django 应用程序测试您的任务
如果工作 运行 后台的 celery worker 就像 daemon
和我一样的问题。
任务在 python shell 中工作,但在 Django 视图中不工作。
我关注了这个
http://docs.celeryproject.org/en/latest/django/first-steps-with-django.html
我在 app.config_from_object 中缺少命名空间,在添加命名空间 ='CELERY' 后,它工作正常。
app.config_from_object('django.conf:settings', namespace='CELERY')
我正在尝试在我的 django 应用程序中使用 celery 创建一些异步任务
settings.py
BROKER_URL = 'django://localhost:6379/0'
CELERY_ACCEPT_CONTENT = ['json']
CELERY_TASK_SERIALIZER = 'json'
CELERY_RESULT_SERIALIZER = 'json'
celery.py:
from __future__ import absolute_import
import os
from celery import Celery
from django.conf import settings
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'provcon.settings')
app = Celery('provcon')
app.config_from_object('django.conf:settings')
app.autodiscover_tasks(lambda: settings.INSTALLED_APPS)
项目__init__py:
from __future__ import absolute_import
from .celery import app as celery_app
tasks.py:
from __future__ import absolute_import
from celery import shared_task
from celery import task
from .models import Proc_Carga
@task()
def carga_ftp():
tabla = Proc_Carga()
sp = tabla.carga()
return None
我这样调用异步任务:
from .tasks import carga_ftp
@login_required(login_url='/login/')
def archivoview(request):
usuario= request.user
if request.method == 'POST':
form = ProcFTPForm(usuario,request.POST)
if form.is_valid():
form.save()
proc = Lista_Final()
lista = proc.archivos()
# call asynchronous task
carga_ftp.delay()
return HttpResponseRedirect('/resumen/')
else:
form = ProcFTPForm(usuario)
return render_to_response('archivo.html',{'form':form},context_instance=RequestContext(request))
当我运行任务来自pythonmanage.pyshell。 worker 被执行并创建数据库对象没有任何问题
但是当我尝试从视图中执行任务时,不工作不执行
知道为什么任务 运行 来自 manage.py shell 而不是来自视图
提前致谢
检查redis是否运行ning
$redis-cli ping
在 django 管理界面中检查 celery worker 是否 运行ning
如果没有运行宁执行这个命令
celery -A provcon worker -l info
从您的 Django 应用程序测试您的任务
如果工作 运行 后台的 celery worker 就像 daemon
和我一样的问题。 任务在 python shell 中工作,但在 Django 视图中不工作。
我关注了这个 http://docs.celeryproject.org/en/latest/django/first-steps-with-django.html
我在 app.config_from_object 中缺少命名空间,在添加命名空间 ='CELERY' 后,它工作正常。
app.config_from_object('django.conf:settings', namespace='CELERY')