我需要在python上的POST Web服务器中修复什么



我有一个脚本来获取json,并使用白色ip在我的ubuntu服务器上运行它我接受json,但不是完全接受,接受后,脚本关闭连接,无法工作我认为问题是我错误地接收了数据包,但由于我对的经验不足,我不清楚为什么它不接受第二个数据包,以及为什么它以无限循环关闭

import os
import socket
from pathlib import Path
from dotenv import load_dotenv
import json

#Init .env
env_path = Path('.') / '.env'
load_dotenv(dotenv_path=env_path)
#create webserver socket
def start_my_server():
socket_server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
socket_server.bind(('ip', port))
socket_server.listen(32768)
print('Working...')
global data
global HDRS
while True:
client_socket, address = socket_server.accept()
data = client_socket.recv(32768).decode('utf-8')
# content = 'Well done'.encode('utf-8')
HDRS = 'HTTP/1.1 200 OKrnContent-Type: text/html; charset=utf-8rnrn'
# content = load_page_from_get_request(data)
client_socket.send(HDRS.encode('utf-8'))
# a = client_socket.send(HDRS.encode('utf-8'))
# print(a, '+'*20)
client_socket.shutdown(socket.SHUT_WR)
load_page_from_get_request(32768)
# print('end')
# socket_server.close()
def load_page_from_get_request(request_data):
HDRS = 'HTTP/1.1 200 OKrnContent-Type: text/html; charset=utf-8rnrn'
HDRS_404 = 'HTTP/1.1 404 OKrnContent-Type: text/html; charset=utf-8rnrn'
try:
with open('data.json', 'w') as output_file:
json.dump(data, output_file)
return HDRS.encode('utf-8')
except EOFError:
return HDRS_404.encode('utf-8')
# try
if __name__ == '__main__':
start_my_server()

我的脚本的最终版本

import os
import socket
from pathlib import Path
from dotenv import load_dotenv
import json
import datetime

#Init .env
env_path = Path('.') / '.env'
load_dotenv(dotenv_path=env_path)
ip = os.environ['ip']
port = os.environ['port']
HDRS = 'HTTP/1.1 200 OKrnContent-Type: text/html; charset=utf-8rnrn'
HDRS_404 = 'HTTP/1.1 404 OKrnContent-Type: text/html; charset=utf-8rnrn'
#create webserver socket
def start_my_server():
socket_server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
socket_server.bind((ip, port))
socket_server.listen(32768)
print('Working...')
global data
while True:
client_socket, address = socket_server.accept()
print('loop', address)
data = client_socket.recv(0).decode('utf-8')
# content = load_page_from_get_request(data)
load_page_from_get_request(data)
client_socket.send(HDRS.encode('utf-8'))
client_socket.shutdown(socket.SHUT_WR)
# print('end')
# socket_server.close()
def load_page_from_get_request(request_data):
# HDRS = 'HTTP/1.1 200 OKrnContent-Type: text/html; charset=utf-8rnrn'
# HDRS_404 = 'HTTP/1.1 404 OKrnContent-Type: text/html; charset=utf-8rnrn'
with open(f'data.json{datetime.time}', 'wr') as output_file:
json.dump(data, output_file)
return HDRS.encode('utf-8')
# except EOFError:
#     return HDRS_404.encode('utf-8')
# try
print('loop script')
if __name__ == '__main__':
start_my_server()