Python 3';s http.server.HTTPServer在本地主机上有一秒钟的延迟
我有一个客户端和一个服务器在同一个盒子上运行。客户端能够向外部URL发出Python 3';s http.server.HTTPServer在本地主机上有一秒钟的延迟,python,basehttpserver,Python,Basehttpserver,我有一个客户端和一个服务器在同一个盒子上运行。客户端能够向外部URL发出urllib.request.request()命令,并在大约0.1秒内获得响应,速度足够快,作为一个用户,我没有注意到任何真正的延迟。当向我的本地http.server.HTTPServer()发出Request()时,在调用urllib.Request.urlopen()的客户端和服务器的do_GET(self)甚至获取请求之间都有1秒的延迟 我看到一些答案表明,这是DNS查找日志记录的问题,覆盖地址字符串(self)可
urllib.request.request()
命令,并在大约0.1秒内获得响应,速度足够快,作为一个用户,我没有注意到任何真正的延迟。当向我的本地http.server.HTTPServer()
发出Request()
时,在调用urllib.Request.urlopen()
的客户端和服务器的do_GET(self)
甚至获取请求之间都有1秒的延迟
我看到一些答案表明,这是DNS查找日志记录的问题,覆盖地址字符串(self)
可以解决这个问题,但无论是否修改,我仍然看到完全相同的延迟
服务器:
import http.server
import time
class MyHTTPHandler(http.server.BaseHTTPRequestHandler):
def do_GET(self):
start = time.time()
print(start)
self.send_response(200)
self.end_headers()
def address_string(self):
host, port = self.client_address[:2]
return host
server = http.server.HTTPServer(('localhost', 9999), MyHTTPHandler)
try:
server.serve_forever()
except KeyboardInterrupt:
print('Stopping server')
客户:
import urllib.request
import urllib.error
import time
def send_data():
start = time.time()
r = urllib.request.Request(url='http://localhost:9999')
print(time.time())
urllib.request.urlopen(r)
print(time.time() - start)
while True:
input('Press enter to send')
send_data()
你知道我错过了什么来摆脱那一秒的延迟吗?我希望这个基本服务器的响应速度至少和web服务器一样快。好的,看来这可能是Python版本的问题 在运行Python3.5.2 for Windows时,我会得到1秒的延迟。
运行适用于Ubuntu的Python 3.4.3(从技术上讲,适用于Windows的Ubuntu)不会有任何延迟。这可能看起来很奇怪,但请尝试在客户端使用127.0.0.1而不是localhost 我在Windows10版本1809上也遇到了同样的问题。python flask服务器和本机应用程序都在
localhost
上响应,延迟为5、150或300毫秒(按顺序依次)。将其切换到127.0.0.1
将其降低到一致的5ms