Я отправляю данные http post на http-сервер из формы на веб-странице, первые 2 запроса работают нормально, но в большинстве случаев, когда я отправляю 3-й запрос, он не получает запрос, однако в некоторых случаях я заметил, что сервер do не получает запрос и на второй запрос, но это происходит не слишком часто, при третьем запросе это вызывает проблему чаще
что происходит, когда я отправляю первый запрос, он мгновенно получает и обрабатывает данные, во втором запросе он делает то же самое, но по третьему запросу он ничего не получает, и веб-страница продолжает показывать знак загрузки, и еще через несколько секунд веб-страница выдает ошибку, что сайт доступен и что 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()