首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Python3的http.server.HTTPServer在本地主机上有一秒的延迟

Python3的http.server.HTTPServer在本地主机上有一秒的延迟
EN

Stack Overflow用户
提问于 2017-06-17 14:18:44
回答 2查看 1.2K关注 0票数 1

我有一个客户机和一个服务器在同一个机器上运行。客户端能够向外部URL发出urllib.request.Request()命令,并在大约0.1秒内得到响应,速度足够快,作为一个用户,我没有注意到任何真正的延迟。当向我本地的http.server.HTTPServer()发出Request()时,客户端调用urllib.request.urlopen()和服务器的do_GET(self)甚至收到请求之间都会有1秒的延迟。

我看到一些答案表明这是一个DNS查询日志的问题,覆盖address_string(self)可以解决它,但我仍然看到完全相同的延迟,无论是否修改。

服务器:

代码语言:javascript
复制
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')

客户端:

代码语言:javascript
复制
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服务器一样快。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-06-17 22:36:29

好的,看起来这可能是Python版本的一个问题。

运行Python 3.5.2 for Windows时,我得到了1秒的延迟。运行Python 3.4.3 for Ubuntu (从技术上讲,Ubuntu for Windows),我没有得到任何延迟。

票数 0
EN

Stack Overflow用户

发布于 2018-05-28 19:43:39

这可能看起来很奇怪,但请尝试在客户端中使用127.0.0.1而不是localhost。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44601471

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档