Django 芹菜任务中的异常

Django 芹菜任务中的异常,django,celery,Django,Celery,任务。py @shared_task(bind=True, default_retry_delay=60, max_retries=3) def index_city(self, pk): from .models import City try: city = City.objects.get(pk=pk) except City.ObjectDoesNotExist: self.retry() #Do stuff here wi

任务。py

@shared_task(bind=True, default_retry_delay=60, max_retries=3)
def index_city(self, pk):
    from .models import City
    try:
        city = City.objects.get(pk=pk)
    except City.ObjectDoesNotExist:
        self.retry()
    #Do stuff here with City
当我毫不延迟地调用上述任务时,它就可以正常工作。当我在运行芹菜的开发环境中使用.delay调用任务时,它也可以正常工作。但是,在生产中,会引发以下异常:

type object 'City' has no attribute 'ObjectDoesNotExist'
我添加了
time.sleep(10)
,以排除任何竞争条件,但这没有效果,异常仍然被抛出。该对象事实上确实存在,因此似乎城市的内联导入没有发生(内联导入是为了防止循环导入问题)请提供任何解决方法

堆栈

  • Django 1.8.5
  • Python 2.7.10
  • 开发中的sqlite和生产中的postgresql

您应该使用
City.DoesNotExist
django.core.exceptions.ObjectDoesNotExist
而不是
City.ObjectDoesNotExist

请参见您应该使用
City.DoesNotExist
django.core.exceptions.ObjectDoesNotExist
而不是
City.ObjectDoesNotExist

请参见

,这只是一个核心例外。还是你自己做的?这只是一个核心例外。或者是你自己做的?Thx,我不认为这会是一个问题,因为这2个继承自ObjectDoesNotExist,但根据你的建议更改后,我现在得到一个适当的异常:操作错误:致命:用户“chris”Thx的对等身份验证失败,我不认为这会是一个问题,因为这2个继承自ObjectDoesNotExist,但在按照您的建议进行更改后,我现在得到了一个适当的异常:OperationalError:FATAL:用户“chris”的对等身份验证失败