Ho creato con successo un RESTful microservice con Python asyncio e aiohttp che ascolta un evento POST per raccogliere eventi in tempo reale da vari alimentatori.Come combinare l'asyncio di Python con i thread?
Quindi crea una struttura in memoria per memorizzare nella cache gli ultimi 24 h di eventi in una struttura di defaultdict/deque nidificata.
Ora mi piacerebbe controllare periodicamente la struttura del disco, preferibilmente usando il pickle.
Poiché la struttura della memoria può essere> 100 MB, vorrei evitare di trattenere l'elaborazione dell'evento in ingresso per il tempo necessario per il checkpoint della struttura.
Preferisco creare una copia snapshot (ad esempio deepcopy) della struttura e quindi prendermi il mio tempo per scriverlo su disco e ripetere su un intervallo di tempo preimpostato.
Sono stato alla ricerca di esempi su come combinare i thread (ed è un thread anche la soluzione migliore per questo?) E asyncio per questo scopo, ma non riuscivo a trovare qualcosa che mi avrebbe aiutato.
Qualsiasi suggerimento per iniziare è molto apprezzato!
Ho usato i suggerimenti di dano e ho creato una configurazione multi-thread molto semplice che controlla l'archivio eventi in memoria ogni 60 secondi su disco. Ecco un link al file repo git che contiene l'intera logica: https://github.com/fxstein/SentientHome/blob/master/engine/event.engine.py – fxstein