Pull to refresh
8K+
2
Shjryoku@Balaklav

Entry-level Backend engineer

9
Rating
1
Subscribers
Habr CareerHabr Career
Send message

Я решил попробовать твою версию, спасибо за дельный совет, но у меня оказалось дело в другом. run_in_executor() идет после get_next_task() где выставляется started_at для выполнения. Я проверил БД и проблема была в этом. started_at выставлялся для всех задач примерно равно, а created_at был с задержками из-за NOW() который фиксирует начало транзакции, а не ее коммит.

Спасибо! Попробую и в следующей статье расскажу

Да, примерно в эту сторону и хочу дальше развивать проект. Сейчас это скорее эксперимент с воркерами в одном процессе.

Особенно хочу отдельно проверить логирование - синхронность там уже дала о себе знать. Думаю скоро доделаю проект, уберу синхронные участки, прогоню бенчмарк ещё раз, а потом попробую вариант с несколькими процессами и сравню результаты.

Спасибо, интересный кейс. Я тоже сначала думал на PostgreSQL, но, как писал в посте, по docker stats сильной нагрузки на него не было. Но блокировки и время ожидания транзакций отдельно пока не проверял, так что полностью исключать этот вариант не буду. Скоро доделаю проект и попробую проверить это отдельно.

Пока не знаю, скоро доделаю проект. Тоже сначала думал на него, но как сказал в посте docker stats не показывали перегруза. Возможно дело в оставшейся синхронности

Под воркером я имел ввиду корутину, которая просто берет задачу из очереди и обрабатывает её, а не отдельный тред. Все воркеры по сути в одном ивент лупе. Думаю скоро я доделаю проект, уберу синхронность, проверю логирование. Потом прогоню еще раз и напишу продолжение с результатами.

Information

Rating
867-th
Registered
Activity

Specialization

Бэкенд разработчик, Разработчик игр
Младший
Git
ООП
SQL
PostgreSQL
Docker
Linux
Python
REST
Redis
CI/CD