Я действительно знаю, что cherrypy является многопоточным и также имеет реализацию пула потоков.
Таким образом, я хотел попробовать пример, показывающий многопоточное поведение.
Теперь позволяет, говорят, что я имею свою некоторую функцию в корневом классе и отдыхаю, все вещи настроены
def testPage(self, *args, **kwargs):
current = threading.currentThread()
print 'Starting ' , current
time.sleep(5)
print 'Ending ' ,current
return 'Hello World'
Теперь позволяет, говорят, что я выполняю свою страницу как http://localhost:6060/root/testPage на 3-4 вкладках браузера.
То, что заканчивается, я добираюсь,
Starting
Ending
Starting
Ending
Starting
Ending
Вещь я могу ясно понять, что она создает новые потоки для обработки каждого нового запроса, но я не могу выяснить, почему каждый раз я добираюсь
запуск... заканчивающийся.. запуск.. окончание
и почему не запуск... запускающийся.. окончание.. окончание иногда
Поскольку то, что мое предположение - то, что time.sleep сделает некоторый поток для приостановки и другой, может выполниться в то время.
Это почти наверняка ограничение вашего браузера, а не CherryPy. Например, Firefox 2 будет делать не более двух одновременных запросов к одному и тому же домену, даже с несколькими вкладками. И если каждая вкладка также получает значок ... это оставляет одно нажатие на вашем обработчике.
См. http://www.cherrypy.org/ticket/550 для билета с аналогичным исходным кодом и более длинным доказательством.