【发布时间】:2014-12-23 05:40:34
【问题描述】:
在我的生产服务器上发生了一个非常奇怪的问题,在 UAT 或我的开发环境中没有出现。堆栈设置为 Ubuntu 14LTS、Apache2、Python 2.7、Celery、RabbitMQ、Django 1.6。
它的工作原理是每当需要生成 excel 报告时都会调用一个异步任务。根据公司的类型,创建不同的报告并将其通过电子邮件发送给登录的用户。创建不同报告的函数都放在一个名为 report_lib.py 的文件中,并且它们不会从任何其他应用程序导入。代码如下:
if policies.carrier == "class_one":
report_lib.create_remittance_class_one_report(company_id)
else:
report_lib.create_generic_remittance_report(company_id)
得到这个,第一个条件没有问题。当我没有设置公司类型时,第二个条件有效(按预期工作),但对于任何其他类,它失败并出现以下错误:
[2014-10-27 17:56:55,271: WARNING/Worker-1] There was an error: 'module' object has no attribute 'create_generic_remittance_report'
为了让事情变得更有趣,我删除了条件并默认为所有情况下只调用“create_generic_remittance_report”函数的代码,这在没有抱怨该模块的情况下工作。
我 99% 确定没有循环引用。哦,被引用的库位于 django 项目中唯一使用的应用程序下。这可能是编译器缓存问题吗? 有没有人使用相同的设置遇到过类似的问题?
请帮忙!
【问题讨论】:
标签: python django python-2.7 rabbitmq celery