Raspberry Pi stoppt Pythonscript rfid

  • Moin,

    ich bin neu hier im Forum und sage an alle erstmal ein herzliches Hallo.

    Ich bin neuling was den Pi und vorallem Python angeht, aus diesem Grund brauche ich unbedingt eure Hilfe. :helpnew:

    Ich habe mir ein Pythonscript erstellt (die Grundlage habe ich mir von hier: ElektronX geholt.

    Das Script habe ich nun an meine Bedürfnisse angepasst, ich weiß es ist noch lange nicht perfekt! :s

    Nun aber zu meinem Problem: Das Script habe ich in den Autostart (/etc/rc.local) des Pi gepackt und es läuft auch sehr gut. Wenn ich den Pi die Nacht über laufen lasse bricht er mein Script einfach ab, und ich weiß nicht wann und vorallem nicht wieso.

    Meine Vermutung war: Die Datenbank wirft standartmäßig nach 1440Sek. ein Timeout, aus diesem Grund habe ich diese Zeilen hinzugefügt (ohne Erfolg) =(

    Code
    # Wenn Datenbankzugriff durch timeout beendet wurde, stell neue Verbindung her.
        if db == 0:
           print "Verbindung fehlgeschlagen: Verbindung wird neu aufgabeut!"
           db = MySQLdb.connect(host="localhost", user="root", passwd="*********", db="rfid")

    Bin für jede Hilfe dankbar!!!

    Und bitte fragt mich nicht warum ich das Datum ständig neu auslese, ich habe alles versucht und nur das hat so funktioniert wie ich es wollte. :D

    Aber für Verbesserungsvorschläge bin ich natürlich offen ;)

    Einmal editiert, zuletzt von Aleonor (31. Dezember 2014 um 11:58)

  • Danke für die Schnelle Antwort!

    Das ist natürlich sehr gut möglich werde es noch abändern, allerdings habe ich heute morgen einfach mal in die Console folgendes eingegeben: ps -ef | grep python
    und habe folgendes Ergebnis erhalten:
    pi 3982 3966 0 10:21 pts/0 00:00:00 grep --color=auto python

    es sieht mir also so aus, als würde das Script crashen und dann wars das, in den Logdateien des Pi steht nix drinn, habe das Script jetzt in der Konsole mal manuel gestartet, vll. bekomme ich dann eine Fehlermeldung!

  • So nach ein par Stündchen warten habe ich nun eine Fehlermeldung bekommen:

    File "/usr/lib/python2.7/dist-packages/MySQLdb/connections.py", line 36, in defaulterrorhandler
    raise errorclass, errorvalue
    _mysql_exceptions.OperationalError: (2006, 'MySQL server has gone away')

    habt ihr eine Idee wie ich damit nun umgehen soll?

  • Hi,
    ich habe zwar keinen Plan von Python ... aber:

    ich tippe auf einen Timeout der DB-Verbindung.
    Abhilfe wäre aus meiner Sicht: wenn das Einlesen des RF-Tags blockiert (wovon ich jetzt mal ausgehe) bis ein Wert eingelesen wurde, dann würde ich den DB-Connect nachher machen.
    So hälst Du die DB-Verbindung über Stunden oder Tage ... das kann irgendwie nicht funktionieren.

    cheers und ein gutes Neues,
    -ds-

  • Ja, es gibt eine Timeout bei Datenbankverbindungen. Hatte ich bei einem C-Programm auch.
    Folgendermaßen habe ich es in C gelöst:

    Nachdem dem Verbinden ein "reconnect" erlauben indem man die Option entsprechend setzt :

    Code
    ...
    mysql_options(&conn, MYSQL_OPT_RECONNECT, &true);
    ...

    Dann vor jedem Zugriff ein "sql-ping" durchführen.


    Da es manchmal nicht beim ersten Mal geklappt hat, gab es eine kleine Schleife.

    Ich hoffe den Transfer in Püton bekommst Du hin.

    Verkaterte Grüße & ein gutes neues Jahr
    Werner

    Einmal editiert, zuletzt von WernerPI (1. Januar 2015 um 09:02)

  • Hi,

    habe es jetzt so umgesetzt wie dreamshader geschrieben hat, zudem hab ich mir noch eine Errorausgabe geschrieben und das ganze läuft nun!

    Vielen Dank an alle!!!

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!