Momenteel ben ik bezig een simpele syslog client te schrijven in Python.
Dit lijkt in eerste instantie prima te werken maar tijdens het debuggen kwam ik een klein probleem tegen.
Als test gooi ik nu een aantal berichten in een loop naar de syslog server.
Wanneer ik tijdens het versturen van deze berichten de syslog server afsluit wordt er pas een exception weergegeven na de tweede iteratie tijdens de afgesloten syslog server.
Even de stappen simpel uitgelegd:
1.) De syslog server is gestart en ik verstuur de eerste twee berichten uit de loop zonder probleem.
2.) De syslog server "is onverwachts" afgesloten, ik verstuur nu het 3e bericht. Ik ontvang geen exception!
3.) Ik verstuur nu bericht 4, nu ziet het programma wel dat de socket is gesloten en raised een exception.
Ik mis dus in de tussentijd één bericht wat in het niets verdwijnt.
Hoe kan ik testen/ ervoor zorgen dat ik zeker weet dat de socket nog open is en/of ik zeker weet dat het bericht is aangekomen.
Relevante (test) code:
alvast dank voor de hulp!
Dit lijkt in eerste instantie prima te werken maar tijdens het debuggen kwam ik een klein probleem tegen.
Als test gooi ik nu een aantal berichten in een loop naar de syslog server.
Wanneer ik tijdens het versturen van deze berichten de syslog server afsluit wordt er pas een exception weergegeven na de tweede iteratie tijdens de afgesloten syslog server.
Even de stappen simpel uitgelegd:
1.) De syslog server is gestart en ik verstuur de eerste twee berichten uit de loop zonder probleem.
2.) De syslog server "is onverwachts" afgesloten, ik verstuur nu het 3e bericht. Ik ontvang geen exception!
3.) Ik verstuur nu bericht 4, nu ziet het programma wel dat de socket is gesloten en raised een exception.
Ik mis dus in de tussentijd één bericht wat in het niets verdwijnt.
Hoe kan ik testen/ ervoor zorgen dat ik zeker weet dat de socket nog open is en/of ik zeker weet dat het bericht is aangekomen.
Relevante (test) code:
Python:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
| import socket socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) socket.connect(('localhost', 514)) def send(message): data = "<%d>%s" % (155, message + "\n") try: #socket.sendall(test.encode('utf-8')) socket.sendall(data.encode('utf-8')) return except Exception as e: print("send failed") messages = ["test1","test2","test3","test4","test5","test6","test7"] for message in messages: send(message) |
alvast dank voor de hulp!