2017-02-08 8 views
0

У меня проблема с одним из моих тестов асинхронного теста: торнадо, похоже, не работает (я получаю 599 секунд), хотя он запущен как инструмент. Я хотел бы, чтобы убедиться, что это действительно работает, выполнив следующие действия:Спящий режим в async-приложении, без блокировки цикла событий

  1. Начать тест
  2. Перед тем как запросы отсылаются в торнадо, я хочу, чтобы мой код «сна» в течение длительного времени так что я могу вручную проверить с браузером, что торнадо действительно работает.

Как я могу сказать python для сна, не блокируя цикл async? Если я делаю time.sleep, весь процесс (и, следовательно, цикл) не реагирует на продолжительность сна.

+0

'time.sleep()' [предполагается приостановить только текущий поток] (http://stackoverflow.com/questions/92928/time-sleep-sleeps-thread-or-process). Можете ли вы предоставить какой-то код, чтобы лучше понять контекст? – Leon

ответ

1

Обе ваши вопросы отвечает в FAQ смерча:

http://www.tornadoweb.org/en/latest/faq.html

Использование yield gen.sleep(1) ждать 1 секунду, а выпускающие другие задачи выполняются на цикл событий, или использовать IOLoop.current().add_timeout(1, callback) для запуска обратного вызова через одну секунду.

Не используйте браузер, чтобы убедиться, что ваше приложение обрабатывает несколько запросов одновременно: сам браузер может не разрешать одновременные запросы. Вместо этого используйте curl.

+0

Спасибо. Браузер не должен использоваться как тестер нескольких запросов, так же как ручная проверка, действительно ли сервер был запущен или нет. Это оказалось проблемой, когда несколько ялопов были неявно определены, в то время как только одна была запущена тестовой средой (py.test). Таким образом, на самом деле проблема была в том, что сервер не работает и работает. – dangonfast

Смежные вопросы