Python 3.x tornado同时处理多个请求
我希望能够同时处理两个以上的请求。 我希望当我访问Python 3.x tornado同时处理多个请求,python-3.x,tornado,Python 3.x,Tornado,我希望能够同时处理两个以上的请求。 我希望当我访问索引时,程序将开始执行,索引可以在我访问停止时停止。 但目前的效果是,程序可以在执行索引后处理其他请求。 它能在windows下实现吗 导入tornado.httpserver 导入tornado.ioloop 导入tornado.web 导入时间 tag=False def main(): 对于范围(10)内的i: 全局标记 时间。睡眠(3) 打印(f“this=={i}”) 打印(f“this tag=={tag}”) 如果标记==True:
索引
时,程序将开始执行,索引
可以在我访问停止
时停止。
但目前的效果是,程序可以在执行索引后处理其他请求。
它能在windows下实现吗
导入tornado.httpserver
导入tornado.ioloop
导入tornado.web
导入时间
tag=False
def main():
对于范围(10)内的i:
全局标记
时间。睡眠(3)
打印(f“this=={i}”)
打印(f“this tag=={tag}”)
如果标记==True:
打印(“--stop--”)
返回“main”
返回“IndexHandler”
类IndexHandler(tornado.web.RequestHandler):
def get(自我):
全局标记
tag=False
打印(f“tag=={tag}”)
结果=main()
self.write(结果)
类StopHandler(tornado.web.RequestHandler):
def get(自我):
全局标记
tag=True
打印(f“tag=={tag}”)
self.write(“StopHandler”)
如果uuuu name uuuuuu='\uuuuuuu main\uuuuuuu':
app=tornado.web.Application([
(r“/索引”,索引处理程序),
(r“/停止”,停止处理程序),
],)
app.listen(2222)
tornado.ioloop.ioloop.current().start()
时间。睡眠是一种阻塞功能,即它阻塞整个程序
您需要使用异步函数来挂起协同程序,例如tornado.gen.sleep
您还需要将函数转换为协程(使用aync/await
语法)
例如:
import tornado.gen
async def main():
for i in range(10):
# ...
await tornado.gen.sleep(3)
# ...
class IndexHandler(tornado.web.RequestHandler):
async def get(self):
# ...
result = await main()
我的主函数将调用许多其他函数,其他函数不是异步的,我是否只需要重写主函数?