在异步应用程序中休眠,不阻塞事件循环

Sleep in async application, without blocking event loop

我的一个异步测试有问题:tornado 似乎没有启动并且 运行(我得到 599s),即使它是作为固定装置启动的。我想通过执行以下操作来验证它确实是 运行:

  1. 开始测试
  2. 在请求实际发送到 tornado 之前,我希望我的代码长时间 "sleep" 以便我可以手动检查浏览器确实是 运行。

如何让 python 进入休眠状态而不阻塞异步循环?如果我这样做 time.sleep,整个过程(以及循环)在睡眠期间没有响应。

你的两个问题都在 Tornado 的常见问题解答中得到了解答:

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

使用yield gen.sleep(1)等待1秒,同时让其他任务运行进入事件循环,或者使用IOLoop.current().add_timeout(1, callback)运行一秒后回调。

不要使用您的浏览器来验证您的应用程序是否同时处理多个请求:浏览器本身可能不允许并发请求。请改用 curl

你可以检查你的代码你的请求方法是POST还是PUT,我在使用方法POST时得到了599响应代码但没有post一个数据,加了data就没了。

error: res = self.fetch('/', method='POST')

fixed: res = self.fetch('/', method='POST', data={})