понедельник, 23 ноября 2009 г.

сериализация декорированных функций

Попробовал написать декоратор для библиотеки отложенных вызовов Ника Джонсона (вот оригинальное имя, да?) в Гугол Апп Энджине. С ходу не вышло, pickle не хочет сериализовать декорированную функцию. Брет Кэннон посоветовал использовать пиклевый протокол. К примеру, __reduce__() может возвратить строку, указывающую на функцию. Надо удостовериться, что между вызовами __call__ и __reduce__ состояние объекта не изменит параллельная нить.

Пока что даже хитрый модуль decorator не сериализирует декораторы (вот пример использования в АЭ). Этот модуль, между прочим, затратно применять для отложенных действий в АЭ -- он использует exec(), что окупается при компилляции, но навряд ли окупится в ситуации частой загрузки инстанса рабочей среды.