Re: Script python se termina cateodata cu "Exception in thread Thread-1 (most likely raised during interpreter shutdown):"

"Paul Lacatus (Personal)" <[email protected]>
Newsgroups gmane.org.user-groups.rlug.offtopic
Message-ID <[email protected]>

On 1/11/2017 12:27 AM, Mihai Osian wrote:
> On 01/10/2017 04:31 PM, Paul Lacatus (Personal) wrote:
>> On 1/9/2017 7:22 PM, Mihai Osian wrote:
>>> On 01/09/2017 10:22 AM, Paul Lacatus (Personal) wrote:
>>>> LA multi ani pe 2017!
>>>>
>>>> Am o intrebare cu referire la un programel python care ruleaza pe un
>>>> Raspberry pi  .  Programelul este lansat la fiecare minut din Crontab .
>>>> Job-ul lui este sa citeasca date dintr-un device pe MODBUS RTU sa le
>>>> stocheze intr-un fisier si apoi sa le transmita catre un Broker MQTT (
>>>> mosquitto) folosind paho_mqtt .  Din cand in cand , cam 50% din cazuri ,
>>>> se termina cu exceptia "Exception in thread Thread-1 (most likely raised
>>>> during interpreter shutdown):" . Nu pare sa afecteze functionalitatea
>>>> scriptului desi   datele in brokerul MQTT nu par a ajunge chiar toate
>>>> dar inca nu stiu pe cine sa dau vina , Raspberry pi e conectat la
>>>> reteaua GPRS Vodafone cu un stick de date .
>>>>
>>>> Mai intii vreau sa inteleg ce inseamna exceptia respctiva , pentru ca nu
>>>> m-am lamurit pe ce am gasit pe net .
>>>>
>>>> Apoi sa vad cum testez mai in detaliu comunicatia cu MQTT
>>>>
>>>> _______________________________________________
>>>       Habar n-am cu ce se mananca mosquitto, dar probleme gen "exception
>>> during shutdown" imi suna familiar. As sugera sa verifici daca scriptul
>>> face cleanup la libraria MQTT inainte sa se termine. E posibil sa  ai un
>>> race-condition intre threadul principal si ala/alea din bucataria
>>> interna MQTT. Threadul principal se termina si cheama diverse rutine de
>>> clean-up (de exemplu distruge shared memory segments, file descriptors,
>>> whatever), fara sa stie despre sau sa astepte threadul muncitor din
>>> background. Threadul din background incearca sa acceseze oarice resursa
>>> care a disparut si crapa. Deci: verifica daca ai inchis toate
>>> conexiunile si oprit background processing loops, sau daca orice rutina
>>> de initializare pe care o foloseste scriptul are si o pereche (absenta)
>>> care ar trebui sa faca cleanup.
>>>
>>> Hth,
>>> Mihai
>>>
>>>
>>>
>> Da . E o problema de threading la mqtt . Am observat ca la incercarea de
>> a publica mai multe informatii pe broker  nu ajungeau toate .  A trebuit
>> sa pun ceva delay intre publicari .
>>
>> Publicarea pe mqtt arata de felul
>>
>> mqttc = mqtt.Client();
>> mqttc.connect(mqtt_broker , 1883, 120);
>> mqttc.loop_start()
>>
>>
>> mqttc.publish ("sing/electrice/contor1/VL1N",VL1N);
>> mqttc.publish ("sing/electrice/contor1/VL2N",VL2N);
>> mqttc.publish ("sing/electrice/contor1/VL3N",VL3N);
>>
>> time.sleep(0.5)
>>
>> mqttc.publish ("sing/electrice/contor1/C1",C1);
>> mqttc.publish ("sing/electrice/contor1/C2",C2);
>> mqttc.publish ("sing/electrice/contor1/C3",C3);
>>
>> time.sleep(0.5)
>>
>> mqttc.publish ("sing/electrice/contor1/PL1",PL1);
>> mqttc.publish ("sing/electrice/contor1/PL2",PL2);
>> mqttc.publish ("sing/electrice/contor1/PL3",PL3);
>>
>> time.sleep(0.5)
>>
>> mqttc.publish ("sing/electrice/contor1/QL1",QL1);
>> mqttc.publish ("sing/electrice/contor1/QL2",QL2);
>> mqttc.publish ("sing/electrice/contor1/QL3",QL3);
>>
>> time.sleep(0.5)
>>
>> mqttc.publish ("sing/electrice/contor1/CF1",math.fabs(CF1));
>> mqttc.publish ("sing/electrice/contor1/CF2",math.fabs(CF2));
>> mqttc.publish ("sing/electrice/contor1/CF3",math.fabs(CF3));
>>
>> time.sleep(0.5)
>>
>> mqttc.publish ("sing/electrice/contor1/CF1t",CF1t);
>> mqttc.publish ("sing/electrice/contor1/CF2t",CF2t);
>> mqttc.publish ("sing/electrice/contor1/CF3t",CF3t);
>>
>> time.sleep(0.5)
>>
>> mqttc.publish ("sing/electrice/contor1/FRQ",FRQ);
>> mqttc.publish ("sing/electrice/contor1/ACPO",ACPO);
>> mqttc.publish ("sing/electrice/contor1/REPO",REPO);
>> mqttc.publish ("sing/electrice/contor1/APPO",APPO);
>>
>> time.sleep(0.5)
>>
>> mqttc.publish ("sing/electrice/contor1/CFI",CFI);
>> ## mqttc.publish ("sing/electrice/contor1/ACPO2",ACPO);
>> ## mqttc.publish ("sing/electrice/contor1/REPO2",REPO);
>> ## mqttc.publish ("sing/electrice/contor1/APPO2",APPO);
>>
>> time.sleep(1)
>> mqttc.disconnect()
>> ||
>> Asa imi transmite toate informatiile catre broker dar tot mai termina
>> din cand in cand cu eroarea de care am discutat
>> _______________________________________________
>> Offtopic mailing list
>> [email protected]
>> http://lists.lug.ro/mailman/listinfo/offtopic
>
>
> Vad un mqttc.loop_start(). Asta porneste procesarea in background. Ai si
> un mqttc.loop_stop() undeva ?
>
> Mihai
Acum da.  Am gasit un exemplu mai complet de utilizare a bibliotecii 
paho-mqtt.  Dupa disconnect se pune un delay de vreo 5 sec si apoi 
loop_stop . Asa nu imi mai da balbe

Multumesc
Paul
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.