Не могу использовать SQLite в качестве бэкэнда в Celery - PullRequest
0 голосов
/ 29 мая 2018

У меня есть простой проект, который не имеет никакой инфраструктуры, такой как Django или Flask.

Мой конфиг такой:

CELERY_BROKER_BACKEND = "sqlakombu.transport.Transport"
CELERY_BROKER_URL = "db+sqlite:///results.sqlite"
CELERY_CACHE_BACKEND = "db+sqlite:///results.sqlite"
CELERY_RESULT_BACKEND = "db+sqlite:///results.sqlite"

Я установил пакеты:

SQLAlchemy==1.2.8
kombu==4.2.0
kombu-sqlalchemy==1.1.0
celery==4.1.1

Когда я пытаюсь запустить сельдерей:

celery worker -A proj --loglevel=info

Я получаю эту ошибку:

File "/home/cyildiz/Projects/env/sample/local/lib/python2.7/site-packages/kombu/connection.py", line 582, in get_transport_cls
transport_cls = get_transport_cls(transport_cls)
File "/home/cyildiz/Projects/env/sample/local/lib/python2.7/site-packages/kombu/transport/__init__.py", line 83, in get_transport_cls     _transport_cache[transport] = resolve_transport(transport)
File "/home/cyildiz/Projects/env/sample/local/lib/python2.7/site-packages/kombu/transport/__init__.py", line 64, in resolve_transport
raise KeyError('No such transport: {0}'.format(transport))
KeyError: u'No such transport: db'

Когда я изменяю настройки на это:

CELERY_BROKER_BACKEND = "sqlakombu.transport.Transport"
CELERY_BROKER_URL = "sqla+sqlite:///results.sqlite"
CELERY_CACHE_BACKEND = "sqla+sqlite:///results.sqlite"
CELERY_RESULT_BACKEND = "sqla+sqlite:///results.sqlite"

Ошибка:

File "/usr/lib/python2.7/importlib/__init__.py", line 37, in import_module__import__(name)
ImportError: No module named sqla

Итак, где я могу ошибиться?

1 Ответ

0 голосов
/ 29 мая 2018

Ну, CELERY_BROKER_URL сделал эту ошибку, я удалил эту строку и сделал настройки как:

CELERY_BROKER_BACKEND = "db+sqlite:///celery.sqlite"
CELERY_CACHE_BACKEND = "db+sqlite:///celery.sqlite"
CELERY_RESULT_BACKEND = "db+sqlite:///celery.sqlite"

Теперь это работает.

...