
Sheridan
22.01.2019
22:15:51

lost
22.01.2019
22:16:02
Ну так это
Почитай про method resolution order

Sheridan
22.01.2019
22:16:46

Google

lost
22.01.2019
22:17:07
А вот с змейкой как раз таки наоборот
Если я не ошибаюсь

Alex
22.01.2019
22:18:03

Sheridan
22.01.2019
22:18:17
спасибо

Alex
22.01.2019
22:20:01
видишь ли тут какая проблема, если у тебя есть общий предок и ты позовешь два конструктора явно, и базовые конструкторы пользуются super, ты потенциально имеешь шанс получить множественный вызов одного из конструкторов базового класса в иерархии.
задача в чем? запустить bottle из другого потока?

Sheridan
22.01.2019
22:20:29

Alex
22.01.2019
22:20:57
super() то как раз наиболее правильный способ обращаться к базовым классам
ты нахрена-то влез в класс Bottle, отнаследовался от него, поимел проблем с множественным наследованием на ровном месте…

Terminator
22.01.2019
22:24:39
@lowit_agr будет жить. Поприветствуем!

Sheridan
22.01.2019
22:24:40
задача в чем? запустить bottle из другого потока?
смотри... Не просто из другого потока...
Ща на пальцах....
Есть два друга - прометей и графана. Оба два умеют дёргать за вебхуки.
У меня есть уже проект - обсервер. "плагинная" реализация. Сейчас умеет читать/матчить логи и срать переделлаными по шаблону результатами в телегу
Хочу ещо два плагина. Под графану и прометея соответственно
боттл при запуске держит поток. Следовательно нужно в отдельном потоке. threadhelper у меня уже есть, нужно только переопределить метод run()
так как вебхук штука простая, то можно и это превратить в базовый для двух плагинов класс, переопределяя метод обработки хука.
Как то так.

Donaudampf
22.01.2019
22:29:24

Alex
22.01.2019
22:29:29

Google

Sheridan
22.01.2019
22:29:58

Alex
22.01.2019
22:30:59

Sheridan
22.01.2019
22:31:54

Alex
22.01.2019
22:33:21

Donaudampf
22.01.2019
22:34:02
что именно, вызов сразу инита вебхука? Можно просто поменять местами ИнпутПлагин и Вебхук в наследовании, тогда вызывать через super, либо оставить как есть и тогда с помощью super(InputPlugin, self) проскочить одну ступень в мро. Но вообще вызов двух инитов - это какая-то херня, зачем это? Нужно просто вызвать super().__init__(...), тот вызовет инит плагина, который в свою очередь - инит вебхука

Sheridan
22.01.2019
22:35:24

Donaudampf
22.01.2019
22:35:31
в общем случае инит класса должен получать набор аргументов и вызывать инит предка, передавая ему его аргументы, затем делат ьсвою работу со своими аргументами

Sheridan
22.01.2019
22:36:43
ну по идее да, похоже будет вызывать, и похоже чтобы это исправить надо в кишки глубоко лезть...

Donaudampf
22.01.2019
22:38:31

Sheridan
22.01.2019
22:39:12
похоже придётся в dict всё оборачивать...
и переименовывать метод у threadhelper
или плюнуть да к чертям обратно в плюсы...

Donaudampf
22.01.2019
22:41:54

Alex
22.01.2019
22:42:31
да. Крах одного не должен мешать другому.
странная логика если честно, что мешает обрабатывать исключения per request, более того это уже зашито в веб-фреймворк. максимум что должно упасть - отдельный обработчик запроса.

Sheridan
22.01.2019
22:42:37

Alex
22.01.2019
22:42:51

Google

Donaudampf
22.01.2019
22:43:27

Sheridan
22.01.2019
22:43:55
данные должны быть строго определены и по возможности строго типизированны

Donaudampf
22.01.2019
22:45:10

Alex
22.01.2019
22:46:28

Sheridan
22.01.2019
22:46:50
каким местом это костыль? Это способ разделения ответственности
я читаю это так: "нам ща надо быстро набросать код, архитектура ненужна, планирование ненужно, что потом из этого получится мы не знаем, но прямо щас оно должно уметь 2+2. Но что потом не знаем, поэтому будем принимать неопределенное количество параметров чтобы потом не пришлось расширяться"

Alex
22.01.2019
22:47:27
мне то до твоего 20 летнего опыта далеко, но завершение потока не освобождает выделенную им память, максимум стек.
более того тебе придется в свой и так полный костылей код навернуть логику мониторинга вывалившихся потоков, что лучше бы отдать на откуп systemd и в случае критичной ошибки вывалить сервис целиком.

Donaudampf
22.01.2019
22:48:41

Sheridan
22.01.2019
22:48:41
с процессом видимо спутал. Сплю уже почти (
крч... если я буду вызывать init руками, то нарвусь на множественные запуски родительских конструкторов, так?
Пойду переписывать код под один dict в конструкторе, раз уж питон иначе не тянет :(
с другой стороны - полезный опыт, спасибо

Donaudampf
22.01.2019
22:52:34
лучше уж приведи конкретный пример, что не получается

Sheridan
22.01.2019
22:52:59

Google

Donaudampf
22.01.2019
22:53:14
хотя бы искуственный пример с аргументами инитов и иерархией

Sheridan
22.01.2019
22:53:23
^

Donaudampf
22.01.2019
22:54:49
зачем вообще передавать в инит аргументы типа self.whatever, если можно их получить из self уже на месте?

Sheridan
22.01.2019
22:55:26

lost
22.01.2019
22:55:27

Donaudampf
22.01.2019
22:56:16

Sheridan
22.01.2019
22:56:23

Admin
ERROR: S client not available

Sheridan
22.01.2019
22:58:08

Artem
22.01.2019
22:59:14
он же троллит ?

Sheridan
22.01.2019
22:59:24

lost
22.01.2019
22:59:52
ну такое, смотрю его тупо порофлить, рассказывает интересно

Donaudampf
22.01.2019
22:59:59

Sheridan
22.01.2019
23:00:12
А ты понял что я написал?
или просто буквы посмотрел
могу повторить

?
22.01.2019
23:00:42
Не могу понять, один и тот же код при работе с selenium.phantomjs...
На серваке CENTOS7 сайт ничего не возвращяет, просто None, на Windows 7 всё ок

Sheridan
22.01.2019
23:00:47
WebhookHelper может унаследовать другой объект

Google

Donaudampf
22.01.2019
23:00:48

Sheridan
22.01.2019
23:00:56
у которого нет self._options

?
22.01.2019
23:01:14
https://pastebin.com/VE1SN7Ft

Alex
22.01.2019
23:01:40

Donaudampf
22.01.2019
23:01:55
у которого нет self._options
ты вызываешь super() из объекта, в котором есть self._options, значит этот же self._options будет там, куда тебя отправит super

Sheridan
22.01.2019
23:02:12
еще раз
WebhookHelper может унаследовать другой объект
у которого нет self._options
и у его родителей нет self._options
и у его дочерей нет self._options
пожтому я параметризирую этот объект в его конструкторе
при вызове конструктора

Donaudampf
22.01.2019
23:03:42
так не проще на месте поискать, есть они или нет?

Sheridan
22.01.2019
23:03:47
при создании объекта
потому что сначала искать лдно
потом другое
следом третье
не дофига ли лишних движений вметсо того чтобы передать в конструктор сразу правльное?

Donaudampf
22.01.2019
23:04:47
похоже что там в один класс понапихано куча всего