如何防止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版本)。您可以使用asyncio
的set_default_executor
方法来控制它,但是我不用担心。
关于python - 将AsyncHTTPClient或其他可等待对象放入Tornado的get方法中,以自动创建ThreadPoolExcutor,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/56017770/