Ricerca delle migliori pratiche di archiviazione delle configurazioni che verranno letti / scritti frequentemente

0

Sto scrivendo un paio di piccoli script python per fare compiti e agire come "bot" in alcune applicazioni che leggeranno / scrivono cose per la configurazione e alcune registrazioni di informazioni a basso livello; Qual è il modo migliore per archiviare questi frammenti di informazioni?

Attualmente ho creato un singolo file config.json con token Bot, informazioni utente con numeri ID e configurazioni dei bot, come se fossero abilitati o meno, nomi di file e quando hanno prodotto una risposta.

I bot saranno in esecuzione su schermate annidate su un Raspberry Pi che ho, quindi il mio piano era di farli aggiornare il file JSON per la loro chiave "Ultima risposta" rilevante in modo che il mio script "controller" possa leggerlo e avvisarmi se non sono stati aggiornati in [x] minuti in base alla loro frequenza di esecuzione, controllerò se lo schermo è ancora attivo ma non so come leggere in quello schermo per vedere se sta ancora stampando.

La preoccupazione che ho di avere più file scritti nello stesso JSON può entrare in conflitto e causare un errore se non gestita e non scrivere il valore come previsto, il lavoro attorno sarebbe più piccolo dei singoli file di configurazione o file di registrazione da registrare quando hanno risposto e quindi il controller può raccogliere tali informazioni per prevenire più scritture da fonti diverse.

C'è un modo migliore per farlo rispetto a quanto sono già stato o potrei fare?

    
posta Ben R 25.08.2018 - 14:53
fonte

3 risposte

1

Personalmente, vorrei studiare una soluzione usando SQLite.

Dalle Domande frequenti di SQLite :

Can multiple applications or multiple instances of the same application access a single database file at the same time?

Multiple processes can have the same database open at the same time. Multiple processes can be doing a SELECT at the same time. But only one process can be making changes to the database at any moment in time, however.

Ogni bot può ottenere la propria riga in una o più tabelle e può recuperare o aggiornare le sue impostazioni in base alle esigenze.

    
risposta data 25.08.2018 - 15:32
fonte
0

Questa descrizione mi sembra un po 'complicata. Ma come ho capito, stai utilizzando piccoli bot di snippet su

Pi ha una potenza di elaborazione e una RAM limitate rispetto alle macchine cloud. Ecco perché non ho intenzione di suggerirti di usare un database. Vedi se c'è qualche cache leggera che puoi usare su pi come un hack in giro. Può renderti la vita più facile.

Un'altra opzione è usare le variabili di ambiente di sistema (a livello Linux) per memorizzare alcune configurazioni. Sarà utile solo per verificare quali bot sono abilitati o meno (tipo di veri valori falsi) e alcuni archivi di stringhe corte, non dovresti assolutamente usarlo per memorizzare i log.

Entrambe le opzioni che ho menzionato mi sembrano come un hackeraggio a un certo livello. Ma se può alleviare è abbastanza buono per una piccola applicazione :)

    
risposta data 25.08.2018 - 15:32
fonte
0

Un'altra soluzione consiste nel separare il controllo e la configurazione dall'esecuzione: eseguire la logica di esecuzione sul PI e lasciare che i bot recuperino qualsiasi configurazione da un'applicazione server in esecuzione altrove; resp. metti le informazioni dai robot a questo server.

Quello che fai lì è indipendente dal PI.

    
risposta data 25.08.2018 - 16:33
fonte

Leggi altre domande sui tag