Ich habe ein Problem, den Beispielcode in den Python-Dokumenten für die Protokollierung DatagramHandler, der unten gezeigte Code zeigt EOFError Ausnahmen auf jedem empfangenen Datagramm erhalten.Python Protokollierung Datagramm Handler
import socket
import logging
import cPickle
import struct
import sys
sock = socket.socket (socket.AF_INET, socket.SOCK_DGRAM)
sock.bind (('localhost', 9000))
handler = logging.StreamHandler()
handler.setFormatter(logging.Formatter("UDP LogViewer %(asctime)s %(message)s"))
logger = logging.getLogger("Test")
logger.addHandler(handler)
try:
while True:
dgram_size = sock.recv(4)
if len(dgram_size) < 4:
break
slen = struct.unpack(">L", dgram_size)[0]
data = sock.recv(slen)
while len(data) < slen:
data = data + sock.recv(slen - len(data))
try:
obj = cPickle.loads(data)
record = logging.makeLogRecord(obj)
logger.handle(record)
except:
print "exception", sys.exc_info()[0]
finally:
sock.close()
jedoch dieser Code funktioniert, irgendwelche Ideen
data, address = sock.recvfrom(8192)
rec = logging.makeLogRecord(cPickle.loads(data[4:]))
logger.handle(rec)
Grüße
Danke sarnold, ich gebe das einen Wirbel – mikip
Prost sarnold, sehr geschätzt – mikip