2013-03-14 100 views
0

首次推出Django芹菜,新的Django和芹菜。Django芹菜最大递归深度超过

下面是我迄今想要我得到以下错误...

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 

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

回答

1

你的任务和你的看法被称为正好是同样的事情。

所以,当你这样做:

result = upload(request) 

你不打电话给你的任务,因为我想你想到,你再次调用您的视图功能。然后再次。然后再次。然后再次。

试着改变你的看法DEF到:

def upload_file(request): 

的应该解决的问题。

+0

O !!!!!那太傻了!是的,你是对的杰克。谢谢。 – jason 2013-03-14 17:01:27

1

重命名你的任务:

@task 
def upload_task(): 
    ... 

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

如果视图和任务具有相同的名称,上传视图中,所谓的上传时,上传上传视图本身。