«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Используйте SQLite в качестве брокера Celery в Django

Используйте SQLite в качестве брокера Celery в Django

Опубликовано 18 августа 2024 г.
Просматривать:531

Use SQLite as a Celery broker in Django

Redis и RabbitMQ могут быть идеальными брокерами при использовании Celery, но когда вы разрабатываете локально, они могут показаться излишними. В документации к Celery 5.4 упоминается, что вы можете использовать SQLite в качестве экспериментального брокера для локальной разработки. Однако, когда вы переходите на страницу серверов и брокеров Celery, SQL упоминается только для SQLAlchemy backend. К счастью, на странице отмечается, что «в этом разделе не рассматриваются серверные части и брокеры».

Этот пост покажет вам, как реализовать брокер SQLite (или любой SQL!) для Celery в проекте Django. Этот пост не научит вас использовать Celery: ознакомьтесь с официальной документацией Celery.

Прежде чем мы начнем

Для целей этого поста мы предполагаем, что у вас уже есть существующий проект Django с установленным Celery, следуя инструкциям из официального руководства Celery «Первые шаги с Django». Серверная часть Celery не необходима, но вы можете следовать инструкциям руководства по установке и настройке django-celery-results. Если вам неясно, в чем разница между бэкэндами и брокерами, прочтите мою статью «Понимание задач, брокеров, воркеров и бэкэндов в Celery».

Все ссылки на исходную документацию будут относиться к текущим версиям Django, Celery и SQLAlchemy на момент публикации (июль 2024 г.), если явно не указано иное. Если вы читаете это в далеком будущем, возможно, все изменится.

Настройка SQL-брокера

Хотя Celery управляет задачами и очередями, он делегирует полномочия другой библиотеке под названием Kombu для обмена сообщениями с брокером. RabbitMQ и Redis — наиболее полнофункциональные транспорты (брокеры) Kombu, но у него также есть виртуальные транспорты для Amazon SQS, ZooKeeper и MongoDB.

В дальних уголках документации Комбу спрятана транспортная модель SQLAlchemy, которая поддерживает PostgreSQL, MySQL и SQLite. Когда-то брокер SQLAlchemy даже был задокументирован на веб-сайте Celery, но с тех пор он был удален из документации в новых версиях библиотеки. Тем не менее, он по-прежнему работает достаточно хорошо для местного развития.

Чтобы использовать базу данных сиквела в качестве брокера Celery в вашем приложении Django, сначала установите SQLAlchemy:

pip install SQLAlchemy

В файле settings.py вашего проекта Django вы можете настроить серверную часть вашего брокера, используя настройку CELERY_BROKER_URL:

# BASE_DIR is the directory of your project's main directory.

CELERY_BROKER_URL = f"sqlalchemy sqlite:////{BASE_DIR}/broker.sqlite3"

URL-адрес SQLAlchemy брокера состоит из трех частей:

  1. Строка sqlalchemy или sqla (они взаимозаменяемы)
  2. Знак
  3. Строка подключения SQLAlchemy

Строки подключения для SQLite на Mac/Unix и Windows различаются:

# MacOS/Unix
CELERY_BROKER_URL = "sqla sqlite:////your/project/path/broker.sqlite3"

# Windows
CELERY_BROKER_URL = "sqla sqlite:///C:your\\project\\path\\broker.sqlite3"

Вы также можете использовать Postgres в качестве брокера Celery или с такой же легкостью использовать MySQL в качестве брокера Celery:

# MySQL
CELERY_BROKER_URL = "sqlalchemy mysql://scott:tiger@localhost/foo"

# PostgreSQL
CELERY_BROKER_URL = "sqla postgresql://scott:tiger@localhost/mydatabase"

# PosgreSQL connecting using pg8000
CELERY_BROKER_URL = "sqla postgresql pg8000://scott:tiger@localhost/mydatabase"

Возможно, вам придется установить другие библиотеки для подключения к MySQL или PostgreSQL, и какая библиотека вы устанавливаете, может повлиять на строку подключения SQLAlchemy. Дополнительные сведения см. в документации по URL-адресу базы данных SQLAlchemy.

Независимо от того, какую базу данных вы выберете, возможно, вы захотите сохранить URL-адрес брокера в переменной среды, чтобы его можно было легко изменить в разных средах:

CELERY_BROKER_URL = os.getenv("CELERY_BROKER_URL")

Предупреждение

Транспорт SQLAlchemy, скорее всего, считается экспериментальным и поэтому не предназначен для промышленного использования. Может произойти потеря данных или сообщения могут быть доставлены несколько раз. Рассмотрите возможность перехода на более надежного брокера, который указан на странице «Брокеры и бэкэнды» Celery.

Тем не менее, это может подойти для местной разработки или даже для небольших побочных проектов. Но я не удивлюсь, если в будущем возможность использовать SQLAlchemy в качестве брокера исчезнет.

Следующие шаги

Когда Celery работает локально, вы можете начать работу над приложением, работающим с очередью. Тем не менее, вы можете обнаружить, что отсутствие автоматической перезарядки является предметом разногласий. Если вы хотите настроить автоматическую перезагрузку Celery в своем приложении Django, прочитайте мой пост «Автоматическая перезагрузка рабочих Celery с помощью специальной команды Django».

Заявление о выпуске Эта статья воспроизведена по адресу: https://dev.to/tylerlwsmith/use-sqlite-as-a-celery-broker-in-django-1jne?1 Если есть какие-либо нарушения, свяжитесь с [email protected], чтобы удалить это
Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3