Visualizza post

Questa sezione ti permette di visualizzare tutti i post inviati da questo utente. N.B: puoi vedere solo i post relativi alle aree dove hai l'accesso.


Post - Lupin_III

Pagine: [1]
1
Progetti e script / PLC FX3U Mitsubishi
« il: Febbraio 21, 2020, 12:06 »
Ciao a tutti, ho un PLC Mitsubishi FX3U e vorrei collegarlo al raspberry per leggere alcuni dati e postarli su un grafico.
Qualcuno potrebbe darmi una mano? In rete ho trovato della documentazione a riguardo soprattutto per il mondo Siemens, veramente poco o nulla a riguardo sui PLC Mitsubishi.
Grazie

2
Base / Re:gestire Errore con while loop senza uscire
« il: Febbraio 21, 2020, 12:01 »
Grazie per i chiarimenti ed il supporto

3
Base / Re:gestire Errore con while loop senza uscire
« il: Febbraio 19, 2020, 16:34 »
Ciao nuzzopippo, grazie per il post. Nel frattempo ho provato la soluzione del @retray indicata da RicPol e sembra funzionare egregiamente
Per fa da cavia mi spiace ma non esco in rete con il PC, se è questo quello che intendevi

4
Base / Re:gestire Errore con while loop senza uscire
« il: Febbraio 19, 2020, 15:03 »
Ciao, hai ragione e condivido tutto le tue osservazioni, colpa mia che non ho spiegato il motivo perché ero concentrato soltanto sulla risoluzione del problema senza entrare nel dettaglio del perché mi serve.
Il problema non è trovare la porta chiusa, perché il database è sempre attivo e già così funziona egregiamente. ogni tre/4 giorni capita però che la connessione aperta con il database cada e quindi il programma esce e mi tocca riavviare manualmente lo script in python.
A questo computer non ha accesso nessun'altro utente. Sul database vengono scritti dei dati letti da un sensore dallo stesso programma python e che non ho riportato per semplicità di lettura. Lo stesso database è poi dato in pasto pasto a dei grafici js. Tutto qui. Pertanto non si pone il problema di bloccare o meno altri utenti, ne di tentativi di connessione all'infinito che possono creare problemi, anzi la macchina è predisposta per fare solo e soltanto questo. Attualmente quando mi accorgo che il programma è uscito sono costretto a riavviarlo manualmente perdendo anche ore e ore di dati. PEr quanto riguarda possibilità di inserimento di dati di login utente errati, il problema non esiste perchè non ci sono utenti che si collegano. L'unico utente che si collega è il programma che nel ciclo while ha le credenziali di accesso e che funziona perfettamente (mydb = mysql.connector.connect ......)
Ripeto, la macchina fa solo e soltanto questo, e può capitare che la connessione aperta, per qualche motivo cada ma a me serve assolutamente che riprovi a riconnettersi, ad esempio ogni 5 minuti. In realtà, non l'ho postato per semplicità di lettura, ma nell'eccezione che si apre in caso di mancato collegamento al database, mi viene comunque inviata una mail di alert.

" E del resto, come pensavi di fare? Se fai una query (ciclo while annidato) e fallisce perché il database è diventato irraggiungibile, dovresti riprovare a connetterti (altro ciclo while annidato) e poi rifare una query (altro ciclo while annidato)... e vai avanti all'infinito a collezionare bamboline russe?"
Proprio per questo motivo, per evitare quello che hai descritto, avevo pensato ad un try all'interno del while, e non in cascata all'infinito. Del resto l'eccezione del try mi dovrebbe far uscire soltanto dal try stesso continuando poi ad eseguire il codice

Ricapitolando:
Non è un problema se il codice ogni x tempo prova a connettersi al database e la connessione viene respinta, non c'è pericolo di bloccare altri utenti che richiedono l'accesso al database, la macchina fa soltanto questo ed è prioritario che continui a provare in caso di mancato collegamento al database. A tal proposito infatti ci sono comunque degli alert tramite email nell'eventuale eccezione richiamata.
Ancora grazie del supporto

5
Base / gestire Errore con while loop senza uscire
« il: Febbraio 19, 2020, 07:04 »
Ciao, ho la necessità di far girare continuamente un piccolo script e a tale scopo utilizzo alcuni "while" annidati. Tuttavia, lavorando su connessioni esterne per salvare dei database può capitare che alcune connessioni cadano e quindi si generi un errore. Per evitare che il programma esca ho inserito un try-except all'interno del ciclo while, ma non sembra funzionare e al verificarsi dell'errore python si erresta.
E' corretto l'approccio che ho usato, esiste un modo più elegante e affidabile? Grazie a tutti

MySQL_connex = False
First_while = True
Second_while = True
while First_while is True:
    try:
        # connessione al database MySQL
        while MySQL_connex is False:
            try:
                mydb = mysql.connector.connect(
                    ...........
                if mydb.is_connected():
                    ............
                    MySQL_connex = True
                else:
                    sleep (60)
            except:
                    MySQL_connex = False
    # Salvataggio variabili nel DB di MySQL
        while Second_while is True:
            try:
                ........................
            except:
                Second_while = False 
        # (qui in reltà leggo un file di appoggio che verifico ad ogni iterazione e dove
        # manualmente scrivo "stop" per uscire volontariamente dal programma)
# chiudi ed esco
if(mydb.is_connected()):
    .........
exit()

Pagine: [1]