Настройка и запуск изолированного приложения Celery, которое взаимодействует с Redis, как брокером и бэкендом
Параметры конфигурации, такие как хост Redis, порт, пароль и базовый URL, загружаются из файла .env с использованием библиотеки pydantic_settings
Пример полностью изолированного Cellery приложения от FastApi. Есть возможность запуска.
- Настройка переменных среды с помощью Pydantic:
BaseSettingsпомогает загружать конфигурацию из.envфайла.- Ключевые параметры (
REDIS_PORT,REDIS_PASSWORD,REDIS_HOST) извлекаются из этого файла.
- Инициализация Celery:
- Приложение
Celeryинициализируется с использованиемRedis, как брокера (broker) и хранилища результатов (backend). - SSL-опция
ssl_cert_reqs: ssl.CERT_NONEотключает проверку сертификатов для защищённых соединений Redis (rediss://).
- Изоляция:
- Приложение Celery независимо и может быть запущено без необходимости запуска FastAPI или другого приложения.
Убедитесь, что Redis работает и доступен по указанному адресу.
Убедитесь, что файл .env содержит нужные параметры:
REDIS_PORT=6379
REDIS_PASSWORD=yourpassword
REDIS_HOST=localhost
BASE_URL=http://localhost:8000Запустите Celery worker:
celery -A имя_вашего_файла celery_app worker --loglevel=infoЗамените имя_вашего_файла на имя Python-скрипта.
Чтобы приложение стало полноценным, вы можете добавить задачи:
@celery_app.task
def add(x, y):
return x + yТеперь задачу можно отправить так:
from имя_вашего_файла import add
result = add.delay(4, 6)
print(result.get()) # Выведет 10Для продакшена избегайте отключения SSL проверки (ssl_cert_reqs: ssl.CERT_NONE).
Убедитесь, что CELERY_BROKER_URL и CELERY_RESULT_BACKEND защищены.
Для мониторинга задач можно использовать Celery Flower.
Автор: Дуплей Максим Игоревич
Дата: 13.12.2024
