Специализация
Python Backend Developer
Java Backend Developer
Node.js Backend Developer
Golang Backend Developer
React Frontend Developer
Выберите навыки
React
JavaScript
Git
Redux
Webpack
Сложность
1-3
4-6
7-8
9-10
Рейтинг вопросов
1
2
3
4
5
Подпишись на React Developer в телеграм
Расскажи про Celery: что это, как работает?
Celery — брокер задач для Python, который позволяет выполнять функции в фоновом режиме. Приложение отправляет задачу в очередь (Redis, RabbitMQ), воркеры её забирают и выполняют, результат можно хранить в backend (Redis, БД).
Есть задача Celery, которая отправляет отчёт в конце месяца. Запущено 50 воркеров. Сколько отчётов получит пользователь?
Пользователь получит один отчёт, поскольку задача ставится в очередь единожды, и только один из 50 воркеров её обработает. Остальные воркеры получат другие задачи или останутся в ожидании.
Использовали ли Redis для Celery?
Да, Redis часто используется как брокер сообщений для Celery.
В каких задачах применяли Celery?
Celery использовался для отправки email, обработки изображений, периодических задач.
Что использовали для логирования ошибок в Celery?
Использовали logging, Sentry, либо Flower для наблюдения за задачами.
Для чего используется celery beat?
Как вы настраивали Celery для выполнения задач по расписанию?
Как можно реализовать обработку задач через RabbitMQ без Celery?
Рейтинг:
1
Сложность:
7
Celery Beat — это планировщик задач для Celery, который запускает задачи по расписанию. Он используется для выполнения периодических или отложенных задач, таких как отправка писем или обновление данных.
Рейтинг:
1
Сложность:
7
Через beat_schedule в настройках Celery. Например:
app.conf.beat_schedule = {
'send-newsletter': {
'task': 'tasks.send_newsletter',
'schedule': crontab(hour=8, minute=0),
},
}Рейтинг:
4
Сложность:
6
Обработку задач можно реализовать напрямую через клиент RabbitMQ, например с помощью библиотеки pika. API выступает как producer и публикует сообщения в очередь, а отдельный процесс-воркер работает как consumer и обрабатывает задачи. Нужно вручную реализовать подтверждения сообщений, обработку ошибок и ретраи. Такой подход проще по зависимостям, но требует больше инфраструктурного кода.
Рейтинг:
1
Сложность:
7
Рейтинг:
1
Сложность:
7
Рейтинг:
2
Сложность:
6
Рейтинг:
2
Сложность:
8
Рейтинг:
2
Сложность:
7