Nicht blockierende Methode zum Parsen (Streaming) von XML in Python

Ich habe ein XML-Dokument, das über einen Socket eingeht, den ich analysieren und sofort darauf reagieren muss (dh einen Teilbaum analysieren). Was ich möchte, ist eine nicht blockierende Methode, damit ich andere Dinge tun kann, während ich darauf warte, dass weitere Daten eingehen (ohne Threading).

So etwas wie iterparse wäre ideal, wenn die Iteration beendet wäre, wenn der Lesepuffer leer wäre, zB:

context = iterparse(imaginary_socket_file_wrapper)
while 1:
    for event, elem in context:
        process_elem(elem)
    # iteration of context finishes when socket has no more data
    do_other_stuff()
    time.sleep(0.1)

Ich denke, SAX wäre auch eine Option, aber es scheint für meine Bedürfnisse einfacher zu sein, es zu analysieren. Irgendwelche Ideen?

Aktualisieren:

Die Verwendung von Threads ist in Ordnung, führt jedoch zu einem Grad an Komplexität, den ich zu umgehen hoffte. Ich dachte, dass nicht blockierende Aufrufe eine gute Möglichkeit sind, aber ich stelle fest, dass dies die Komplexität beim Parsen von XML erhöht.

Antworten auf die Frage(3)

Ihre Antwort auf die Frage