标签: http.server

http.server 在连接关闭之前没有响应

我有一个使用该requests包发布到服务器的应用程序。在我的测试环境中,我想建立一个简单的服务器,以便我可以验证客户端的请求。但是,当我打电话时requests.post,它就挂起了。服务器根本不会响应,直到客户端最终超时并且连接关闭。讽刺的是,服务器随后发送了 200 OK。

这是我的服务器 MRE:

import http.server

class TestHandler(http.server.BaseHTTPRequestHandler):
    def do_POST(self):
        print('Received:', self.rfile.read())
        self.send_response(200)
        self.end_headers()

if __name__ == '__main__':
    http.server.HTTPServer(('127.0.0.1', 8080), TestHandler).serve_forever()
Run Code Online (Sandbox Code Playgroud)

这是我为客户提供的 MRE:

import requests

if __name__ == '__main__':
    print(requests.post('http://127.0.0.1:8080/hello', data='Testing', timeout=5))
Run Code Online (Sandbox Code Playgroud)

python http.server

4
推荐指数
1
解决办法
1093
查看次数

无法使用线程在后台运行 python http 服务器

我正在尝试使用线程在后台运行 python http 服务器。我遇到了几个执行以下操作的参考文献:

import threading
import http.server
import socket 
from http.server import HTTPServer, SimpleHTTPRequestHandler

debug = True
server = http.server.ThreadingHTTPServer((socket.gethostname(), 6666), SimpleHTTPRequestHandler)
if debug:
    print("Starting Server in background")
    thread = threading.Thread(target = server.serve_forever)
    thread.daemon = True
    thread.start()
else:
    print("Starting Server")
    print('Starting server at http://{}:{}'.format(socket.gethostname(), 6666))
    server.serve_forever()
Run Code Online (Sandbox Code Playgroud)

当 thread.daemon 设置为True时,程序将完成而不启动服务器(端口 6666 上没有任何运行)。当我将 thread.daemon 设置为False时,它​​会在前台启动服务器并阻止终端,直到我手动终止它。

关于如何进行这项工作有什么想法吗?

python python-multithreading http.server

1
推荐指数
1
解决办法
3178
查看次数