我有一个客户机和一个服务器在同一个机器上运行。客户端能够向外部URL发出urllib.request.Request()
命令,并在大约0.1秒内得到响应,速度足够快,作为一个用户,我没有注意到任何真正的延迟。当向我本地的http.server.HTTPServer()
发出Request()
时,客户端调用urllib.request.urlopen()
和服务器的do_GET(self)
甚至收到请求之间都会有1秒的延迟。
我看到一些答案表明这是一个DNS查询日志的问题,覆盖address_string(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服务器一样快。
发布于 2017-06-17 22:36:29
好的,看起来这可能是Python版本的一个问题。
运行Python 3.5.2 for Windows时,我得到了1秒的延迟。运行Python 3.4.3 for Ubuntu (从技术上讲,Ubuntu for Windows),我没有得到任何延迟。
发布于 2018-05-28 19:43:39
这可能看起来很奇怪,但请尝试在客户端中使用127.0.0.1而不是localhost。
https://stackoverflow.com/questions/44601471
复制相似问题