
Roman
31.10.2018
07:02:52

Alex
31.10.2018
07:03:12

Tishka17
31.10.2018
07:05:43

LighteR
31.10.2018
07:06:53

Google

LighteR
31.10.2018
07:09:14

Tishka17
31.10.2018
07:09:37
каждый сервис пусть решает сам
ну то есть если он стабилен и не развивается, можно и выкатить апдейт если там секьюрити или ещё что
если не секьюрити, можно и забить на апдейт

LighteR
31.10.2018
07:12:09
если не секьюрити, можно и забить на апдейт
Ну не всегда можно забить на обновление. Может быть общая инфраструктура, которая используется микросервисами, и которая периодически может меняться. И микросервисы должны эти изменения поддерживать

Tishka17
31.10.2018
07:12:41
общая инфраструктура для микросервисов - боль. Ты должен предусмотреть что они не обновятся одновременно

LighteR
31.10.2018
07:13:37
каждому микросервису свой инстанс rabbitmq, например?

Tishka17
31.10.2018
07:14:16
Ну общая инфраструктура должна быть минимизирована, ага
Я понимаю, переезд на новый формат логов
Короче, если надо - обновляем.

LighteR
31.10.2018
07:17:05
А что, у него что-то меняется?
Ну если не говорить конкретно про рэббит, может быть обновление версии сервера и соответственно необходимость обновлять драйвер в микросервисах

Google

Tishka17
31.10.2018
07:17:33
Какого сервера?

LighteR
31.10.2018
07:17:37

Tishka17
31.10.2018
07:18:09
У них общих ресурсов должен быть минимум, рэббит, логи и всё

LighteR
31.10.2018
07:18:51
под каждый микросервис отдельный кластер elasticsearch держать?

Tishka17
31.10.2018
07:19:20
Почему у всех микросервисов эластик?
Напрямую в базу ходить - антипаттерн

LighteR
31.10.2018
07:19:48

Tishka17
31.10.2018
07:20:11
В свою базу напрямую. В чужую базу - вообще не знать о её существовании, а обращаться к сервису

LighteR
31.10.2018
07:20:29
а я нигде и не говорил, что микросервисы шарят между собой одну базу

Tishka17
31.10.2018
07:20:46
А. Все юзают один инстанс эластика

LighteR
31.10.2018
07:20:48
это антипаттерн, я согласен
да

Tishka17
31.10.2018
07:20:55
Со своими индексами?

LighteR
31.10.2018
07:21:01
да

Tishka17
31.10.2018
07:21:13
Ну тогда да. Обновление сервера - тяжело
Хотя протокол там хттп, вроде обратно совместим

LighteR
31.10.2018
07:21:59
формат некоторых запросов формируется в драйвере

Google

Tishka17
31.10.2018
07:22:21
Драйвере?

LighteR
31.10.2018
07:22:21
и может отличаться в разных версиях

Tishka17
31.10.2018
07:22:48
Я думал к эластику обращаются без драйвера через какие-то либы, в том числе сторонние

LighteR
31.10.2018
07:22:51
ну давай назовем это клиентской либой

Tishka17
31.10.2018
07:23:30
Короче, это уже не минорное обновление о котором ты начал
А редкий переезд.

LighteR
31.10.2018
07:23:48
просто некоторые называют это драйвером. Например разрабы кассандры называют клиентскую либу Python Cassandra Driver

Tishka17
31.10.2018
07:24:06
Лучше в этом случае сервисы переводить по отдельности
Поднимать новый инстанс и туда мигрировать по одному

LighteR
31.10.2018
07:24:55

Tishka17
31.10.2018
07:25:28
Ну такой переезд требует тщательного тестирования всеми возможными способами

LighteR
31.10.2018
07:26:03

Tishka17
31.10.2018
07:26:20
ну вот от ситуации и надо плясать
нет универсального ответа

LighteR
31.10.2018
07:29:13
В любом случае, даже если не часто обновлять версии зависимостей все равно должен быть какой-то удобный способ строго фиксировать версии всех зависимостей. И pip'ом это делать не очень удобно

Tishka17
31.10.2018
07:31:50
pipenv?

LighteR
31.10.2018
07:32:06
например

Nick
31.10.2018
07:38:18
Хай, народ
Где можно почитать/смотреть туториалы по kivy?
Вчера весь день искал и почти ничего не нашел

Tishka17
31.10.2018
07:38:41
да сдался тебе он

Nick
31.10.2018
07:39:00

Google

Steven
31.10.2018
07:42:02
киви фуу
если пилить под ондроеды то тут путхлоном не обойдешся
учи java
и качай Android Studio

Tishka17
31.10.2018
07:42:42
или kotlin

Cashik
31.10.2018
07:47:36
Подскажите, есть же какая-то библиотекак TaskManager для сервера, чтобы можно было передать туда метод, параметры и каким-то простым способом получать оттуда состояния и ответ?
Это, наверное, должна быть какая-то обертка вокруг multiprocessing.

LighteR
31.10.2018
07:48:39

Daniel
31.10.2018
07:51:13
Ребята, привет.
У меня короче код исполняется через asyncio, нужно чтобы если в потоке произошло исключение - падал и основной процесс, дабы супервизор потом все перезапустил.
Сейчас делаю так:
lp = asyncio.get_event_loop()
lp.set_exception_handler(partial(exc_handler, log=app['logger']))
lp.create_task(consume_callback(channel, body, envelope, properties, app))
Чтобы все исключения из consume_callback попадали в :
def exc_handler_panic(loop, context, log: logging.Logger):
log.error(context, extra={'stack': True}, exc_info=True)
raise Exception('Panic thread error, need close main process')
И падал основной процесс
Но походу это не рабайтан

Admin
ERROR: S client not available

Roman
31.10.2018
07:51:24
pipenv?
почему не pip и requirements, ведь пофиг что у тебя на машине установленно, тебе всё равно придётся файл конфигурации для прода менять. почему бы это руками не поменять просто в файле requirements

LighteR
31.10.2018
07:52:33

Roman
31.10.2018
07:53:14

LighteR
31.10.2018
07:53:40

Tishka17
31.10.2018
07:54:08

LighteR
31.10.2018
07:54:17
чтобы, например, установленный локально ipython не попадал в requirements.txt

Roman
31.10.2018
07:54:20

LighteR
31.10.2018
07:56:24
Так же как и в pipenv , свой конфиг свой раздел
Можно пример? Я при локальной разработке клонирую репу, делаю pip install -r requirements.txt, потом ставлю, например, ipython для удобства разрабтки. В процессе разработки решаю добавить новую либу в requirements.txt. Делаю pip freeze > requirements.txt и в нем оказывается ipython
Я вижу выход только в создании нового чистого virtualenv'а каждый раз когда мне надо что-то добавить или изменить в requirements.txt

Roman
31.10.2018
08:01:01

Google

Aragaer
31.10.2018
08:07:00
Просто не надо делать pip freeze > requirements.txt
надо pip freeze -r requirements.txt
тогда он будет смотреть туда и выдавать только то, что там есть

LighteR
31.10.2018
08:12:11
Как тебе в этом сценарии может помочь pipenv?
Можно сделать pipenv install ipython --dev, тогда она попадет в секцию dev Pipfile'а.
Если мне нужно, чтобы вообще никуда не попадало, то можно сделать pip install ipython, возможно это как-то и pipenv'ом можно сделать

Roman
31.10.2018
08:17:26

LighteR
31.10.2018
08:17:48
если сделать `pip install ipython`, то вообще никуда не запишется

Roman
31.10.2018
08:18:57

Aragaer
31.10.2018
08:20:36

LighteR
31.10.2018
08:21:23

Aragaer
31.10.2018
08:21:32
мне проще, я свой requirements.txt поддерживаю руками
потому что у меня еще есть requirements-dev.txt например

LighteR
31.10.2018
08:21:57
Допустим у нас есть requirements.txt. Помимо зависимостей в нем, у меня в окружении стоят dev-зависимости. Теперь я решил добавить в проект, например, aiohttp. Что я должен сделать?

Aragaer
31.10.2018
08:23:06
pip freeze -r requirements.txt печатает сначала что в requirements.txt, потом пустую строчку, потом коммент "это добавлено pip freeze-ом"
а потом остальное
надо взять requirements.txt, вписать туда aiohttp
потом pip install -U -r requirements.txt

LighteR
31.10.2018
08:23:56
так, а дальше?

Roman
31.10.2018
08:24:16

LighteR
31.10.2018
08:24:21
как получить потом нужный requirements.txt, в котором будут все зависимости aiohttp?