Python http服务器在2个请求后停止响应

Python http服务器在2个请求后停止响应,python,httpserver,Python,Httpserver,我正在从网页上的表单向http服务器发送http post数据,前两个请求工作正常,但大多数情况下,当我发送第三个请求时,它不会收到请求 但是,在某些情况下,我确实注意到服务器在第二次请求时也没有收到请求,但这种情况并不经常发生,在第三次请求时,它会更频繁地导致问题 当我发送第一个请求时,它会立即接收并处理数据,在第二个请求时,它也会这样做,但在第三次请求时,它没有收到任何内容,网页继续显示加载标志,几秒钟后,网页给出错误信息,即可以访问该网站,并且123.12.12.12响应时间过长 这是代码

我正在从网页上的表单向http服务器发送http post数据,前两个请求工作正常,但大多数情况下,当我发送第三个请求时,它不会收到请求 但是,在某些情况下,我确实注意到服务器在第二次请求时也没有收到请求,但这种情况并不经常发生,在第三次请求时,它会更频繁地导致问题

当我发送第一个请求时,它会立即接收并处理数据,在第二个请求时,它也会这样做,但在第三次请求时,它没有收到任何内容,网页继续显示加载标志,几秒钟后,网页给出错误信息,即可以访问该网站,并且123.12.12.12响应时间过长

这是代码

import os
import kwargs
import args
import csv
from http.server import BaseHTTPRequestHandler, HTTPServer
import logging
import urllib.parse

class S(BaseHTTPRequestHandler):
def _set_response(self):
    self.send_response(200)
    #self.send_header('Content-type', 'text/html')
    #self.end_headers()

def breakRequest(self, str):
    l = []
    x = str.split("&")
    for i in x:
        a = i.split("=")
        l.append(a[1])
    return l[0], l[1], l[2], l[3], l[4]

def do_POST(self):
    content_length = int(self.headers['Content-Length']) 
    post_data = self.rfile.read(content_length) 
    var1,var2,var3,var4,var5 = self.breakRequest(str(post_data.decode('utf-8')))
    s = "\n"   +var1+  "\n"  +var2+  "\n"  +var3+  "\n"  +var4+  "\n"  +var5+  "\n"
    logging.info(s)
    #logging.info("POST request,\nPath: %s\\n%s\n\nBody:\n%s\n",
    str(self.path), str(self.headers), post_data.decode('utf-8')
    #print (urllib.parse.unquote(var5))
    pass


    if (var5 == str("1")):
        with open(r'C:\Users\Administrator\AppData\Received\Files\file1.csv', 'w', newline='') as file:
            writer = csv.writer(file)
            writer.writerow([var1])
            writer.writerow([var2])
            writer.writerow([var3])
            writer.writerow([var4])

            

    self._set_response()
    self.wfile.write("Done {}".format(self.path).encode('utf-8'))        

    if (var5 == str("2")):
        with open(r'C:\Users\Administrator\AppData\Received\Files\file2.csv', 'w', newline='') as file:
            writer = csv.writer(file)
            writer.writerow([var1])
            writer.writerow([var2])
            writer.writerow([var3])
            writer.writerow([var4])

    self._set_response()
    self.wfile.write("Done {}".format(self.path).encode('utf-8'))                

    if (var5 == str("3")):
        with open(r'C:\Users\Administrator\AppData\Received\Files\file3.csv', 'w', newline='') as file:
            writer = csv.writer(file)
            writer.writerow([var1])
            writer.writerow([var2])
            writer.writerow([var3])
            writer.writerow([var4])
    self._set_response()
    self.wfile.write("Done {}".format(self.path).encode('utf-8'))     

def run(server_class=HTTPServer, handler_class=S, port= int(input("enter the serving port"))):
    logging.basicConfig(level=logging.INFO)
    server_address = ('', port)
    httpd = server_class(server_address, handler_class)
    logging.info('Starting httpd...\n')
    try:
        httpd.serve_forever()
    except KeyboardInterrupt:
        pass
    httpd.server_close()
    logging.info('Stopping httpd...\n')

if __name__ == '__main__':
    from sys import argv

    if len(argv) == 2:
        run(port=int(argv[1]))
    else:
        run()

你能把你发送的请求包括在内吗?您在浏览器/curl中具体做什么?这是一个简单的http post请求,我有一个简单的HTML表单,一旦用户输入数据并单击提交按钮,表单数据将以这种格式“key1=abc&key2=123&key3=hjkl&key4=asdf&key5=2”发送到服务器。您能包含您发送的请求吗?您在浏览器/curl中具体做什么?这是一个简单的http post请求。一旦用户输入数据并单击提交按钮,我就有一个简单的HTML表单,然后表单数据以这种格式发送到服务器“key1=abc&key2=123&key3=hjkl&key4=asdf&key5=2”