Нет модуля с именем django.db.backends.mysql.compiler

У меня эта странная ошибка с тех пор, как мы обновились с Django 1.11.5 до Django 2.1.3 (python 3.5.2). Мы используем MySQL 5.7.24. Последние установленные пакеты:

  • django-mysql == 2.4.1
  • mysqlclient == 1.3.14

Также мы используем сельдерей:

  • сельдерей == 4.2.1
  • Джанго-сельдерей-бит == 1.3.0
  • Джанго-сельдерей-результаты == 1.0.4

Ошибка возникала только тогда, когда мы выполняли задачу сельдерея (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)

У тебя есть какие-нибудь подсказки? Какие-нибудь советы? Пожалуйста, порекомендуйте.

ОБНОВЛЕНИЕ # 1

Мы заметили, что он ищет файл в dist-packages, но внутри него нет пакета Django. Django находится в site-packages.

ОБНОВЛЕНИЕ # 2

Наконец-то мы нашли проблему. Решением было воссоздать виртуальную среду.

Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
0
1 286
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Решено!

Наконец-то мы нашли проблему. Решением было воссоздать виртуальную среду.

Другие вопросы по теме