Спрашивал в python@cjr, но меня знатно проигнорили.
Разбираюсь тут в твистеде (конкретно сейчас — twisted.web), не могу врубиться или нагуглить, как реализовать следующую вещь. В общем, в методе render_GET я вызываю дополнительную функцию, которая работает очень долго (при этом она не лезет в сеть и нет ничего, связанного с io — просто много расчетов). Если делаю просто return doit(), то интерпретатор выполняет только ее, а все другие запросы в очередь. Попробовал костыль — запускаю twisted.internet.task.deferLater с задержкой в секунду. Секунду твистед по-прежнему принимает запросы, а потом опять целиком погружается в выполнение этой функции.
Так вот, как мне сделать так, чтобы во время выполнения этой тяжелой функции твистед нормально принимал остальные запросы? Может ли он так вообще?
werehuman
03.02.2011 15:49 lithium
Do you really want to delete ?
Запусти в отдельном потоке. thread.start_new_thread (или как-то так), да и в твистеде что-то такое есть (см. обработку сообщений в пстоботе).
есть, но это не костыль?
Или отдельный поток или отдельный процесс. По-другому никак.
поток работает, спасибо
NP
deferToThread же, ну.
уже
точнее, callInThread