我有一个奇怪的错误,因为我们从Django 1.11.5升级到Django 2.1.3(python 3.5.2)。我们使用MySQL 5.7.24。安装的最新软件包是:
我们还使用芹菜:
该错误仅在我们执行芹菜任务(perform_display_ads_check
)时发生。如果我们在不使用.delay()
的情况下运行函数,它将起作用。
以下是此任务的代码:
@shared_task
def perform_display_ads_check():
try:
checker = DisplayAdsCheck()
checker.check_all()
except Exception as e:
logger.exception(str(e))
message = 'Cannot check display ads. Reason: {}'.format(str(e))
send_slack_message.delay(message=message)
raise Reject(requeue=False)
send_slack_message.delay(message=message)
有效。此数据库不涉及任何数据库。
这是日志:
[2018-12-05 09:51:47,626: WARNING/ForkPoolWorker-1] Task clients.tasks.display_ads_check.perform_display_ads_check[535c8b34-5cf4-48e0-a16d-a22b5979f38b] reject requeue=False: None
Traceback (most recent call last):
File "/home/tool/www/project/clients/tasks/display_ads_check.py", line 26, in perform_display_ads_check
checker.check_all()
File "/home/tool/www/project/clients/tasks/display_ads_check.py", line 38, in check_all
clients = self.process()
File "/home/tool/www/project/clients/tasks/display_ads_check.py", line 81, in process
for client in clients_qs.iterator():
File "/home/tool/.virtualenvs/tool_py3/local/lib/python3.5/dist-packages/django/db/models/query.py", line 50, in __iter__
File "/home/tool/.virtualenvs/tool_py3/local/lib/python3.5/dist-packages/django/db/models/sql/query.py", line 256, in get_compiler
File "/home/tool/.virtualenvs/tool_py3/local/lib/python3.5/dist-packages/django/db/backends/base/operations.py", line 316, in compiler
File "/home/tool/.virtualenvs/tool_py3/lib64/python3.5/importlib/__init__.py", line 126, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
File "<frozen importlib._bootstrap>", line 985, in _gcd_import
File "<frozen importlib._bootstrap>", line 968, in _find_and_load
File "<frozen importlib._bootstrap>", line 955, in _find_and_load_unlocked
ImportError: No module named 'django.db.backends.mysql.compiler'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/home/tool/.virtualenvs/tool_py3/local/lib/python3.5/dist-packages/celery/app/trace.py", line 382, in trace_task
R = retval = fun(*args, **kwargs)
File "/home/tool/.virtualenvs/tool_py3/local/lib/python3.5/dist-packages/celery/app/trace.py", line 641, in __protected_call__
return self.run(*args, **kwargs)
File "/home/tool/www/project/clients/tasks/display_ads_check.py", line 31, in perform_display_ads_check
raise Reject(requeue=False)
celery.exceptions.Reject: (None, False)
您有什么线索吗?有小费吗?请告知。
我们注意到,它在dist-packages
中查找文件,但是其中没有Django软件包。 Django在site-packages
中。
我们终于找到了问题所在。解决方案是重新创建虚拟环境。
答案 0 :(得分:1)
我们终于找到了问题所在。解决方案是重新创建虚拟环境。