Django Celery超出最大递归深度

时间:2013-03-14 16:54:06

标签: django django-views django-celery

第一次淘汰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

有人可以帮我理解我在这里做错了什么。谢谢。

2 个答案:

答案 0 :(得分:1)

您的任务和视图被称为完全相同

所以当你这样做时:

result = upload(request)

您没有按照我的预期调用您的任务,而是再次调用您的查看功能。然后再次。然后再次。再一次。

尝试将您的视图更改为:

def upload_file(request):

应该解决问题。

答案 1 :(得分:1)

重命名您的任务:

@task
def upload_task():
    ...

def upload(request):
    result = upload_task(request)

如果视图和任务具有相同的名称,则在内容上传视图中,上传调用时,上传是上传视图本身。