слушать какую-то очередь. Я думал реализовать так - при запуске монолита рядом создается отдельный тред который слушает очередь и что-то делает и имеет контекст монолита, или лучше сделать отдельное приложение который отдельно запускает свой процесс?
Слушателей очереди может быть больше чем 1.
Отдельный процесс так же будет иметь контекст монолита.
Пока больше склоняюсь к тому что будет отдельный докер компоуз который будет запускать слушателей очереди как отдельный процесс.
Может есть тулзы или статьи как вообще люди питонисты делают?
А от чего зависит количество слушателей?
Возможно от трафика, что бы можно было без боли скейлить все это дело. Увеличивать уменьшать количество воркеров и т.д.
Я думал использовать какой-то dramatiq, но воркер который кладет в очередь сообщение является ассинхронным.
То есть у тебя в рамках одного монолита и синк и асинк?
А в контекст входит общая бд?
бд тоже да.
Ну, тут вопрос какая тогда тебе польза будет от того, чтобы выносить этот функционал из монолита. У тебя появятся проблемы с синхронными релизами, слежением за обратной совместимостью, вынесение логики в библиотеки (иначе дубликация кода), конфигов больше Я в этом вижу смысл только, если ты хочешь переходить от монолита к микросервисам или SOA, либо если нагрузка на эту часть приложения намного больше, чем на основную, поэтому скейлить ее будет быстрее и проще.
если не выносить то создавать thread? и там запускать слушателя?
или ты про разделение синк асинк апки?
Нет, асинк и треды лучше не никогда не смешивать
Обсуждают сегодня