Эти обработчики я хочу сделать плагинами, чтоб оперативно добавлять/изменять
сделал вот так:
def create_worker(work): exec ('import %s' % (work,)) exec ('worker = %s.%s_wrk()' % (work,work)) return worker worker = create_worker(work) worker.go(data)
Cоответственно в файле с именем, скажем, qwerty.py есть класс qwerty_wrk с методом go
(здесь я не привожу проверку на наличие самого файла, она в другом месте)
впринципе можно из без файла, все в строку пихать, но пока так
Вопросов три:
1. какие подводные камни могут быть при таком подходе?
2. обработчики я хочу заливать с сервера, повторный вызов import импортирует заново или будет использовать кеш? (если нет то как заставить?) или всеж лучше без файла и без import, но строкой
3. есть ли другие варианты “прикрутить плагины”
ЗЫ на import я хочу возложить проблему перезагрузки измененного модуля, ибо если заливать в exec содержимое модуля как строку, боюсь могут появиться забавные эффекты, оставшиеся от старого варианта… Ибо тогда это будет не модуль а часть основной программы, или я ошибаюсь?