Comments 18
Как минимум, узнал про модуль tornado.gen, спасибо!
А txmongo, не пробовали случайно?
Он ведь вроде бы как раз и предназначен для асинхронных запросов к монгодб.
Он ведь вроде бы как раз и предназначен для асинхронных запросов к монгодб.
Нет, пока asyncmongo хватает. Он тоже для этого.
О, пожалуй, то что нужно, спасибо
посмотрите еще motor обязательно.
Есть народ такой «Нахуа». Костыль ведь. При чём работающий не всегда. Или на творчество потянуло?
Такое лучше спрятать подальше и никому не показывать.
наверное все же «Самая короткаЯ»
<irony>Как только люди не извращаются, лишь бы Erlang не учить...</irony>
Очень по-хакерски =)
Но, я уверен, тут нужно смотреть в сторону модификации абстрактного синтаксического дерева (AST), а не байт-кода. Для этого есть модуль docs.python.org/library/ast.html
Допустим, если встретили в AST функцию, обернутую в декоратор с именем
Из плюсов:
* лучшая переносимость между версиями (т.к. формат AST документирован, а байт-код может изменяться без предупреждения)
* трансформация происходит в момент «компиляции» а не в момент импорта (т.е. в .pyc файле будет уже
* код AST-трансформации по идее должен быть гораздо проще
* не нужно ничего манкипатчить
* проблемы со сложной декомпозицией и установкой результата «не-переменным» должны отпасть.
Из минусов — я не знаю есть ли возможность применять AST трансформацию автоматически, скорее всего нужно писать Мakefile и компилировать .pyo отдельно. К сожалению, в Python нет опций компилятора, как в Erlang parse_transform например.
Может попробуете на досуге? ;-)
Но вообще очень интересный способ, спасибо! Как в NodeJS без
Но, я уверен, тут нужно смотреть в сторону модификации абстрактного синтаксического дерева (AST), а не байт-кода. Для этого есть модуль docs.python.org/library/ast.html
Допустим, если встретили в AST функцию, обернутую в декоратор с именем
@shortgen
, то ищем в её теле оператор бинарного сдвига и заменяем его на yield + Task.Из плюсов:
* лучшая переносимость между версиями (т.к. формат AST документирован, а байт-код может изменяться без предупреждения)
* трансформация происходит в момент «компиляции» а не в момент импорта (т.е. в .pyc файле будет уже
yield
).* код AST-трансформации по идее должен быть гораздо проще
* не нужно ничего манкипатчить
* проблемы со сложной декомпозицией и установкой результата «не-переменным» должны отпасть.
Из минусов — я не знаю есть ли возможность применять AST трансформацию автоматически, скорее всего нужно писать Мakefile и компилировать .pyo отдельно. К сожалению, в Python нет опций компилятора, как в Erlang parse_transform например.
Может попробуете на досуге? ;-)
Но вообще очень интересный способ, спасибо! Как в NodeJS без
yield
живут не понимаю.Сделал то же самое на AST, если кому интересно habrahabr.ru/post/153949/
Sign up to leave a comment.
Самая короткая запись асинхронных вызовов в tornado или патчим байткод в декораторе