Size: a a a

2020 July 31

J

JvK in ctodailychat
вообще если на объект-модуль убрать все ссылки то он релоадится. но могли бы разрешить и по живому
источник

IV

Igor V in ctodailychat
Но зачем делать релоад плагину или это для development needs?
источник

J

JvK in ctodailychat
чтобы основной процесс не перегружать если юзер плагин обновил
источник

J

JvK in ctodailychat
ну и девелопмент понятно облегчает
источник

J

JvK in ctodailychat
но опять же я не могу сделать просто import(mod, reload=True). а мне надо гонять importlib
источник

IV

Igor V in ctodailychat
JvK
чтобы основной процесс не перегружать если юзер плагин обновил
Ну это ведь такое... непрактичное... если lifecycle плагинов живет отдельно от родительской системы, то есть более интересны подходы чем reload. Я с ходу не смог вспомнить в какой технологии можно сделать полный безболезненный reload не убивая процесс.
источник

J

JvK in ctodailychat
там много нюансов. например модуль нужно заимпортить в сендбоксе чтобы вытащить какую-то инфу типа версии. но если сделаешь reload то изменится и тот модуль что уже загружен
источник

J

JvK in ctodailychat
они там делали для модулей какое-то metainfo но оно в зачаточном состоянии
источник

J

JvK in ctodailychat
вариант делать модулю шапку и ее парсить
источник

IV

Igor V in ctodailychat
Мне в importlib очень нравится возможность фильтровать по спеке.
источник

IV

Igor V in ctodailychat
Условно вытащи мне только объекты VersionInfo и все такое
источник

J

JvK in ctodailychat
надо попробовать что они там наделали
источник

J

JvK in ctodailychat
по идее для сендбокса можно multiprocessing заюзать, у чайлда должен быть свой кеш на модули
источник

IV

Igor V in ctodailychat
Именно
источник

IV

Igor V in ctodailychat
у себя так и делаем.
источник

J

JvK in ctodailychat
интересно. 3.8 кстати в сендбоксе импортит уже новый модуль а в системе работает старый
источник

J

JvK in ctodailychat
нужно будет всё проверить
источник

J

JvK in ctodailychat
ага. короче вот так. допустим в модуле живёт класс Plugin от которого создан объект plugin. если перегрузить модуль то существующий объект останется работать со старым
источник

J

JvK in ctodailychat
тоесть если весь функционал модуля живёт в объекте то можно жить
источник

IV

Igor V in ctodailychat
JvK
но опять же я не могу сделать просто import(mod, reload=True). а мне надо гонять importlib
А зачем почему нельзя import сделать функцией?
источник