Forum >> Programmazione Python >> Database >> sqlite3 in rete

Pagina: Indietro 1 2 3

Praticamente mi parte a routine di asyncio ma il resto del programma (tkinter) di avvia solo dopo che la routine asyncio finisce ...... ma non dovrebbe andare in contemporanea (anche se non realmente in parallelo) ?
Premetto che non conosco bene la programmazione asincrona (advanced user, ci siete?), men che meno associata a thread "bloccanti", tipo quello di tkinter, un processo "imperativo" rimane sempre e comunque una serie sequenziale di istruzioni, NON È parallela.

Per altro, ciò che è al di fuori del mainloop di tkinter non può essere eseguito al di fuori di esso ... architettura complessa che normalmente evito, comunque sbattendosi un po' ci si riesce anche a farla, Ti allego una variante dell'esempio che ho fatto prima sviluppata con programmazione asincrona.

Per me è stato un esperimento, architettura completamente diversa e non ho ben chiare le implicazioni del codice sviluppato, è un unico file e funziona analogamente all'esempio precedente, provalo e per approfondimenti vedere la docs.




Ciao


Fatti non foste a viver come bruti...
Allegati
Uuuuuuuh guarda se posso permettermi, hai intrapreso una strada alquanto alternativa. Scusa se ritorno con la mia idea originale: Client --> API --> DB

API e DB possono stare anche sullo stessa macchina che può essere un minicomputer, uno dei client o vista la tua immagine profilo un RPi. Basta che questa resti sempre accesa.

Così puoi anche implementare logiche diverse e ti da molta libertà d'azione, oltre ad essere uno sviluppo molto più divertente (per me).

Ma scusate l'intromissione, ho detto la mia e me ne torno nella penombra, che fa caldo al sole.

Cya
Daniele aka Palmux said @ 2024-02-29 18:22:04:
Beh potresti avere ritardi nella scrittura, ma non credo altri disagi visti gli accessi esigui.

Penserei di implementare un sistema un po' diverso, con il database trasparente per gli utenti. Si accederebbe solo la tua macchina, tramite magari un web-framework alla FastAPI (che è semplicissimo), ricevendo/esponendo/scrivendo le richieste poi dal/al DB. In questo modo potresti gestirti in maniera piuttosto semplice anche le code in entrata e non aver paura di qualche perdita accidentale.

utenti <--> framework <--> database

Però certo, capisco quello che stai pensando, se è una singola riga con 10 valori... beh beh beh disse la pecora, forse la fatica supera il gusto e lascerei il tutto come è adesso.

Ma chissà, vedi tu quanto ti vuoi ancora divertire, sarebbe una cosa non necessaria, ma una scusa per imparare una cosa nuova.

Cya

Ciao Daniele, ho rivisto su tuo suggerimento questo post e sarei d'accordo con te se non fosse per tre motivi :




1- la scrittura, lettura,modifica stato dei messaggi è tutto già funzionante (sono quasi 15 gg che lo testo, solo che quando mi inseriscono un nuovo messaggio mi avvisano perchè io lanci la rilettura del db dalla mia postazione, mi manca solo la notifica !!! :confused:)




2 - il secondo motivo di disaccordo è che vorrei prima riuscire a fare andare tutto quello che ho fatto prima di imbarcarmi in altre procedure partendo da zero.




3 - la mia macchina non è sempre accesa (se non ci sono è spenta), e quindi il sistema non funzionerebbe.




.... ho avuto un'idea ora .... e se io invece di avere un notifica facessi aggiornare la mia interfaccia costantemente ??? ogni 30/40 secondi ?? potrei avere dei blocchi ?? rallentamenti ??

In pratica sostituire l'aggionramento che ora faccio io manualmente con un ciclo/timer ??? A cosa potrei andare in contro ??

Potrei trovarmi a non riuscire ad usare l'interfaccia perchè l'aggiornamento è in corso ??




Intanto grazie









------
Alberto
.... ho avuto un'idea ora .... e se io invece di avere un notifica facessi aggiornare la mia interfaccia costantemente ??? ogni 30/40 secondi ?? potrei avere dei blocchi ?? rallentamenti ??
In pratica sostituire l'aggionramento che ora faccio io manualmente con un ciclo/timer ??? A cosa potrei andare in contro ??
Potrei trovarmi a non riuscire ad usare l'interfaccia perchè l'aggiornamento è in corso ??
Scusate se intervengo sulla domanda posta a @Daniele.


Le due modalità che ti ho mostrato funzionano entrambe, non Ti vanno bene? Magari è l'uso delle classi che "ostacola"?

In ogni caso, Ti segnalo che puoi anche utilizzare il metodo "after" (ci avevo già accennato) delle finestre tkinter per far si che un metodo/funzione richiami se stesso ogni tot di tempo restando nel ciclo idle di tkinter, con database consistenti o con reti intasate potrebbero succedere dei congelamenti temporanei della gui (motivo per il quale preferisco i thread), comunque potresti provare anche quello, magari Ti va bene.

Quanto su ad integrazione di quanto prima fatto.




Non di meno, pur considerando ottima l'indicazione di @Daniele, la "comunicazione remota" riproporrebbe in ogni caso il problema del refresh della finestra se la view fosse una finestra grafica, entrerebbero comunque in gioco i tempi necessari alla lettura dei dati ed alla comunicazione, temo.

:)

Fatti non foste a viver come bruti...
.... ho avuto un'idea ora .... e se io invece di avere un notifica facessi aggiornare la mia interfaccia costantemente ??? ogni 30/40 secondi ?? potrei avere dei blocchi ?? rallentamenti ??
In pratica sostituire l'aggionramento che ora faccio io manualmente con un ciclo/timer ??? A cosa potrei andare in contro ??
Potrei trovarmi a non riuscire ad usare l'interfaccia perchè l'aggiornamento è in corso ??
Scusate se intervengo sulla domanda posta a @Daniele.


Le due modalità che ti ho mostrato funzionano entrambe, non Ti vanno bene? Magari è l'uso delle classi che "ostacola"?

In ogni caso, Ti segnalo che puoi anche utilizzare il metodo "after" (ci avevo già accennato) delle finestre tkinter per far si che un metodo/funzione richiami se stesso ogni tot di tempo restando nel ciclo idle di tkinter, con database consistenti o con reti intasate potrebbero succedere dei congelamenti temporanei della gui (motivo per il quale preferisco i thread), comunque potresti provare anche quello, magari Ti va bene.

Quanto su ad integrazione di quanto prima fatto.




Non di meno, pur considerando ottima l'indicazione di @Daniele, la "comunicazione remota" riproporrebbe in ogni caso il problema del refresh della finestra se la view fosse una finestra grafica, entrerebbero comunque in gioco i tempi necessari alla lettura dei dati ed alla comunicazione, temo.

:)


Ciao Nuzzopippo, i tuoi due suggerimento hanno due grossi ostacoli x me (per ora, perchè vorrei superarli) :

1 - come dicevi tu "le classi", le ho usate ma non le conosco bene da potermene "fidare" , sicuramente farei qualcosa che faticherei molto a far funzionare.

2- tu la fai semplice (giust'appunto tu) ma il codice che mi hai scritto anche nel primo esempio, contiene delle sintassi che non conosco e non ho mai visto (che però mi intrigano, perchè vorrei migliorare il mio Python che è molto basico... dovuto al poco tempo disponibile x approfondire e anche ad una vecchiaia che mettersi al pc per imparare qualcosa dopo 9 ore di pc al lavoro e in particolare dopo le 21:30 con il sonno e la stanchezza che incalzano.... non è facile imparare cose nuove)

Quindi avendo esigenza di far funzionare il software cerco , sul subito, di NON rivoluzionare ciò che ho fatto e che funziona ma di integrarlo con quel che mi manca per renderlo operativo il prima possibile.

I foglietti volanti in negozio ci stanno creando "casini" continui.

Questo non vuol dire che non approfondirò i vostri suggerimenti, anzi c'è solo da imparare .... ma mi servono settimane se non mesi per capire.... ; vi chiedo comunque la cortesia di continuare, se possibile, a supportarmi senza pretesa che capisca tutto quello che mi suggerite.

Scusate ma sono molto ignorante in python....

Grazie
------
Alberto
Non riesco a trovare esempi basici che mi itegrino tkinter con after o asyncio o i tread (non ho preclusioni) che mi permettano di usarlo come base di partenza per delle prove per poter capire come funzionano.
E sto cercano non poco....



------
Alberto
Capisco, a volte ci vuole un po' per comprendere e non sempre si è in condizioni ottimali, credo sia capitato a tutti.




Se ho capito bene, vuoi conservare al massimo il codice già implementato facendogli ripetere una funzione di lettura dei messaggi ogni tot di secondi ... credo che con la funzione after segnalata prima potresti risolvere senza grossi stravolgimenti.

Si può provare a suggerire qualcosa ma dovremmo vedere il Tuo codice, non dico tutto ma almeno riguardo come lanci la funzione di lettura dei messaggi e la funzione stessa, prova ad inserirli in un post, assieme al nome della root (istanza a "Tk()" ) ed informazioni sulla visibilità della stessa rispetto a detti stralci di codice.

Fatti non foste a viver come bruti...


Pagina: Indietro 1 2 3



Esegui il login per scrivere una risposta.