Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/three.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x tornado同时处理多个请求_Python 3.x_Tornado - Fatal编程技术网

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()

我的主函数将调用许多其他函数,其他函数不是异步的,我是否只需要重写主函数?