Sto progettando API per una libreria python che accetta input asincroni e produce l'output asincrono: vari segnali entrano e vari segnali vengono generati in risposta (non c'è una relazione uno-a-uno tra i segnali input e output).
L'input potrebbe provenire da un input utente di rete / file / interattivo (basato sul terminale); o da una funzione di visualizzazione del framework web. Allo stesso modo, l'output potrebbe dover essere inviato a un socket / file / schermo o restituito a un chiamante (in quest'ultimo caso, dovrebbe essere memorizzato nel buffer e tutto l'output accumulato dall'ultima chiamata deve essere restituita). La scelta tra diversi canali I / O viene effettuata una volta all'inizio e non viene modificata mentre il programma è in esecuzione.
Suppongo che il livello I / O utilizzi più thread o processi o sia asincrono. E chiama le mie funzioni di libreria.
Quali sono i pro / contro di accettare come argomenti due oggetti stream (per input e output); esporre le funzioni che devono essere richiamate quando un input è disponibile o l'output è desiderato; usare i messaggi per comunicare? O forse qualche altro approccio è migliore?