Sto cercando di scrivere un parser di log di sistema. Riceverà messaggi dal demone syslog di FreeBsd tramite stdin.
Utilizzerà quei messaggi per determinare se un IP dovrebbe essere bannato o meno. Il problema che ho è che dopo x secondi il blocco dovrebbe essere rimosso, ma se non avrò alcun input da stdin, il mio programma bloccherà solo ad attenderlo. Quindi nel frattempo non posso fare nulla.
L'ho risolto usando i thread, ma non c'è un modo migliore per farlo?
Ad esempio qualcosa del genere:
while true:
while <data in stdin>:
handleData
doSomeStuff()
Quindi finché non arriva nulla da stdin voglio eseguire doSomeStuff e se ci sono dei dati gestirlo.