werehuman 03.02.2011 15:49 lithium

Спрашивал в python@cjr, но меня знатно проигнорили.

Разбираюсь тут в твистеде (конкретно сейчас — twisted.web), не могу врубиться или нагуглить, как реализовать следующую вещь. В общем, в методе render_GET я вызываю дополнительную функцию, которая работает очень долго (при этом она не лезет в сеть и нет ничего, связанного с io — просто много расчетов). Если делаю просто return doit(), то интерпретатор выполняет только ее, а все другие запросы в очередь. Попробовал костыль — запускаю twisted.internet.task.deferLater с задержкой в секунду. Секунду твистед по-прежнему принимает запросы, а потом опять целиком погружается в выполнение этой функции.
Так вот, как мне сделать так, чтобы во время выполнения этой тяжелой функции твистед нормально принимал остальные запросы? Может ли он так вообще?

1. utros 03.02.2011 15:54 jabber.el

Запусти в отдельном потоке. thread.start_new_thread (или как-то так), да и в твистеде что-то такое есть (см. обработку сообщений в пстоботе).

2. werehumanutros /1 03.02.2011 15:55 lithium

есть, но это не костыль?

3. utroswerehuman /2 03.02.2011 15:56 jabber.el

Или отдельный поток или отдельный процесс. По-другому никак.

4. werehumanutros /3 03.02.2011 16:04 lithium

поток работает, спасибо

5. utroswerehuman /4 03.02.2011 16:05 jabber.el

NP

6. arts 03.02.2011 19:23

deferToThread же, ну.

7. werehumanarts /6 03.02.2011 19:23 lithium

уже

8. werehumanarts /6 03.02.2011 19:24 lithium

точнее, callInThread

Do you really want to delete ?