Size: a a a

Django [ru] #STAY HOME

2021 May 25

1

1N54N3 in Django [ru] #STAY HOME
Есть django-channels consumer
При получении какого-то event в нем создается группа и запускается бесконечный цикл, отправляя данные раз в n секунд
Когда группа уничтожается нужно прекратить цикл
Как это можно реализовать? Как узнать что группа уничтожилась?

receive(...):
//group add
func()
if (event.type ='exit')
//group discard

func(self):
//while loop
 //send info
источник

СЕ

Сергей Ефимов... in Django [ru] #STAY HOME
re_path(r'^(ct(?P<ct>[0-9]+)/)$', ListProductsView.as_view()),
Нашёл... Вот так хотел.
источник

D

D in Django [ru] #STAY HOME
спасибо
источник

Н

Не выходи из комнаты... in Django [ru] #STAY HOME
Есть 2 микросервиса (A, B). В микросервисе A описаны модели - таблицы базы данных.

Микросервису B нужны данные из таблиц, описанных в микросервисе A.

Как можно получить данные?
1. описать аналогично таблицы в микросервисе B и работать в нём с джанго орм. но тут возможны проблемы. должен быть один источник данных. нарушается dry, возможны проблемы с миграциями (хотя миграции можно держать в одном инстансе, наверно).
2. делать запросы на получение данных в сервис A через какую-то шину (кафка)/хттп?
3. делать коннект бд и получать данные в сервисе B через raw sql.

Какой вариант лучше в такой ситуации? Может, есть ещё какие, более разумные подходы?
источник

вф

вфывбюфыь фьытвабфыт... in Django [ru] #STAY HOME
вынести бд в третий микросервис
источник

вф

вфывбюфыь фьытвабфыт... in Django [ru] #STAY HOME
и из второго обращаться к третьему
источник

Н

Не выходи из комнаты... in Django [ru] #STAY HOME
и как обращаться? хттп?
источник

NC

Nikolay Cherniy in Django [ru] #STAY HOME
микросервисы всегда нарушают dry, а описывать модели в любом случае придется так или иначе в обоих, даже если все данные будешь получать через интерфейс - все равно какую нибудь пидантик модель впихнешь)
источник

ЯК

Ярослав Коробейников... in Django [ru] #STAY HOME
Зачастую 2 вариант
источник

ЯК

Ярослав Коробейников... in Django [ru] #STAY HOME
Если синхронно нужно то по http
источник

ЯК

Ярослав Коробейников... in Django [ru] #STAY HOME
Если можно асинхронно, то использовать брокеры сообщений какие-нибудь
источник

ЯК

Ярослав Коробейников... in Django [ru] #STAY HOME
Ну вроде как зачастую нужно так проектировать микросервисы чтобы dry не нарушать, зачем тебе два микросервиса в которых одинаковые данные лежат?
источник

NC

Nikolay Cherniy in Django [ru] #STAY HOME
а есть опыт написания микросервисов?
источник

ЯК

Ярослав Коробейников... in Django [ru] #STAY HOME
Да.... Мы тоже дохера чего копиями держали ;(
источник

ЯК

Ярослав Коробейников... in Django [ru] #STAY HOME
Но это было тупо ;((
источник

NC

Nikolay Cherniy in Django [ru] #STAY HOME
тут суть в том, что микросервис должен быть максимально независим, иначе это просто распределенный монолит = бедпрактис. а вообще микросервисы здорового человека пишутся разными командами и возможно на разных языках и не знаю насколько дублируют друг/друга
источник

ЯК

Ярослав Коробейников... in Django [ru] #STAY HOME
Ну зачастую вроде как должно быть так, есть микросервис у него есть его личная бд, он там что-то хранит, всё что от него трубется это api доступа к этой бд через http или там асинхронно как-нибудь. И другие сервисы должны получать данные по api этого микросервиса
источник

ЯК

Ярослав Коробейников... in Django [ru] #STAY HOME
3 вариант явно антипаттер shared database
источник

ЯК

Ярослав Коробейников... in Django [ru] #STAY HOME
1 вариант это копирование...... источников правды может стать несколько
источник

ЯК

Ярослав Коробейников... in Django [ru] #STAY HOME
Вот и остаётся только доступ к данным из бд микросервиса А по http или очереди
источник