自动创建ThreadPoolEx

自动创建ThreadPoolEx

如何防止Tornado服务器自动创建ThreadPoolExector。

环境:

窗户10

python 3.7

龙卷风6.0.2

import tornado.ioloop
import tornado.web
from tornado.httpclient import HTTPRequest, AsyncHTTPClient

class TestHandler(tornado.web.RequestHandler):
    WRITE_MP3_BUFFER_SIZE = 4096

    async def get(self):
        try:
            http_client = AsyncHTTPClient()
            req = HTTPRequest(
                url='https://www.google.com',
                method='GET')
            response = await http_client.fetch(req)
            contents = response.body.decode('utf-8')
            self.write(contents)
        except Exception as e:
            self.write(str(e))

if __name__ == "__main__":
    app = tornado.web.Application([
        tornado.web.url(r"/", TestHandler),
        ])
    app.listen(5000)
    print("Service Started")
    tornado.ioloop.IOLoop.current().start()


我在VS Code中调试此代码,然后通过Chrome从http://127.0.0.1:5000进行查询,当我在调试时在Vs Code中设置断点时,我发现ThreadPoolExectutor会在每个查询的调用堆栈中出现,它会无限增加并关闭吗?

最佳答案

该ThreadPoolExecutor用于DNS请求,来自标准库的asyncio模块。它的大小有限,因此它会在某个时候停止增长(限制取决于您的python版本)。您可以使用asyncioset_default_executor方法来控制它,但是我不用担心。

关于python - 将AsyncHTTPClient或其他可等待对象放入Tornado的get方法中,以自动创建ThreadPoolExcutor,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/56017770/

10-09 21:06