第一次淘汰Django Celery,Django和Celery的新手。
以下是我到目前为止尝试得到以下错误...
/ contacts / upload上的RuntimeError 超出最大递归深度
我正在使用SQS和消息代理。
settings.py
# Celery
import djcelery
djcelery.setup_loader()
INSTALLED_APPS += (
'south',
'userena',
'social_auth',
'djcelery',
)
BROKER_TRANSPORT = 'sqs'
BROKER_TRANSPORT_OPTIONS = {
'region': 'eu-west-1',
}
BROKER_USER = 'xyz'
BROKER_PASSWORD = 'zyx'
tasks.py
@task
def upload(request, **kwargs):
file = request.FILES['file']
ContactCSVModel.import_from_file(file)
return True
view.py
@login_required
def upload(request):
result = upload(request)
if result:
messages.add_message(request, messages.SUCCESS, 'Items have been added to the database.')
else:
etc
有人可以帮我理解我在这里做错了什么。谢谢。
答案 0 :(得分:1)
您的任务和视图被称为完全相同。
所以当你这样做时:
result = upload(request)
您没有按照我的预期调用您的任务,而是再次调用您的查看功能。然后再次。然后再次。再一次。
尝试将您的视图更改为:
def upload_file(request):
应该解决问题。
答案 1 :(得分:1)
重命名您的任务:
@task
def upload_task():
...
def upload(request):
result = upload_task(request)
如果视图和任务具有相同的名称,则在内容上传视图中,上传调用时,上传是上传视图本身。