Обрыв связи после принятие одного POST json
Задача такова, надо ловить json'ы которые будут постоянно прилетать от хоста по адресу http://ip:port Но после получения первого 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')
#print(data, '-'*20)
# content = 'Well done'.encode('utf-8')
HDRS = 'HTTP/1.1 200 OK\r\nContent-Type: text/html; charset=utf-8\r\n\r\n'
# content = load_page_from_get_request(data)
# client_socket.send(HDRS.encode('utf-8'))
#a = client_socket.send(HDRS.encode('utf-8'))
client_socket.send(HDRS.encode('utf-8'))
#print(a, '+'*20)
client_socket.shutdown(socket.SHUT_WR)
# print('end')
# socket_server.close()
def load_page_from_get_request(request_data):
with open('data.json', 'w') as output_file:
json.dump(data, output_file)
# try
if __name__ == '__main__':
start_my_server()
Ответы (1 шт):
Автор решения: Miekrif
→ Ссылка
Последняя версия моего скрипта
Ошибка была в ответе, после которого заканчивается передача, я воспользовался уже имеющимися статьями в stack
import os
import socket
from pathlib import Path
from dotenv import load_dotenv
import json
import datetime
import time
#Init .env
env_path = Path('.') / '.env'
load_dotenv(dotenv_path=env_path)
HDRS = 'HTTP/1.1 200 OK\r\nContent-Type: text/html; charset=utf-8\r\n\r\n'
HDRS_404 = 'HTTP/1.1 404 OK\r\nContent-Type: text/html; charset=utf-8\r\n\r\n'
#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...')
seconds = time.time()
local_time = time.ctime(seconds)
while True:
client_socket, address = socket_server.accept()
print('loop', address)
addresses = open('ipPOST', 'a')
addresses.write(str(address)+f'{local_time}\n')
addresses.close()
data = client_socket.recv(1048576).decode('utf-8')
# content = load_page_from_get_request(data)
# load_page_from_get_request(data)
# global data
client_socket.send(HDRS.encode('utf-8'))
client_socket.shutdown(socket.SHUT_WR)
print(data)
with open(f'data{local_time}.json', 'w') as output_file:
json.dump(data, output_file)
# print('end')
# socket_server.close()
print('loop script')
if __name__ == '__main__':
start_my_server()