Найти - Пользователи
Полная версия: Сервер, принимающий данные
Начало » Network » Сервер, принимающий данные
1
ivpo
Добрый день

Я совсем новичок.
Написал вот такой скрипт:

 #!/usr/bin/env python3
import socket
import time
def parse(conn, addr):
	print("		Data received")
	data = b""  
	f = open('../index.html', 'w')
	while not b"#" in data: 
		data = conn.recv(1024)		
		udata = data.decode("utf-8")		
		print(udata)
		a = time.strftime("%Y-%m-%d-%H.%M.%S", time.localtime())		
		f.write(a)		
		f.write(udata + '\n')
	return
	f.close()
	
sock = socket.socket()
sock.bind( ("", 1904) )
sock.listen(10)
try:
	while 1:		
		conn, addr = sock.accept()
		conn.settimeout(60) 
		print("New connection from " + addr[0])
		try:			
			parse(conn, addr)			
		except:
			print("Error")
			send_answer(conn, "500 Internal Server Error", data="Ошибка")
		finally:
			print("Connection closed")
			conn.close()
finally: sock.close()

Назначение - принимать данные от некоего устройства и логгировать их.

Есть вопросы:

1) Скрипт “работает только один раз”. После разрыва соединения заново к нему соединится не получается.

2) Всё это крутится на хостинге и папка, куда сливаются данные (где лежит index.html) общедоступна.
По каким-то причинам файл появляется там с 10-15-минутным лагом.
Не пойму, то ли заморочки хостинга, то ли косяки у меня в скрипте.
Наверное правильно складывать всё это в MySQL базу данных, но пока в процессе освоения

3) Буду благодарен за указание на ошибки и косяки в скрипте.

Заранее огромное спасибо!
doza_and
Комбинация
 	return
	f.close()
Заставляет прослезиться.
Если файл открывается так:
 f = open('../index.html', 'w')
То на лог это не очень похоже. В питоне для логгирования есть модуль logging

Позвольте узнать как вы определили что есть 10 минутный лаг?
Как в вашей системе будет вести себя приведенный ниже скрипт?
 import time
f = open("a.dat","w")
f.write("asd")
time.sleep(10)
f.close()
DamMercul
doza_and
Комбинация заставляет прослезиться
посмеяться
ivpo
while not b“#” in data:
надо while b“#” not in data
ivpo
send_answer(conn, “500 Internal Server Error”, data=“Ошибка”)
ай ай, русские буквы да в контент зону
тем более - код весь в студию, зач мне огрызок
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB