Ankündigung

Einklappen
Keine Ankündigung bisher.

backend-plugin: Fehler 500 in Threads

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    backend-plugin: Fehler 500 in Threads

    Hi,

    ich bin auf dem aktuellen develop und mir ist aufgefallen, dass ich nicht mehr in die Threads schauen kann.

    Das ist was ich im Logfile angezeigt bekomme:

    Code:
    2017-12-05  23:06:31 ERROR    CP Server Thread-15 [05/Dec/2017:23:06:31] HTTP
    Traceback (most recent call last):
      File "/usr/local/lib/python3.5/dist-packages/cherrypy/_cprequest.py", line 670, in respond
        response.body = self.handler()
      File "/usr/local/lib/python3.5/dist-packages/cherrypy/lib/encoding.py", line 221, in __call__
        self.body = self.oldhandler(*args, **kwargs)
      File "/usr/local/lib/python3.5/dist-packages/cherrypy/_cpdispatch.py", line 60, in __call__
        return self.callable(*self.args, **self.kwargs)
      File "/usr/local/smarthomeng-dev/plugins/backend/BackendThreads.py", line 69, in threads_html
        thread['alive'] = t.is_alive()
      File "/usr/lib/python3.5/threading.py", line 1113, in is_alive
        self._wait_for_tstate_lock(False)
      File "/usr/lib/python3.5/threading.py", line 1069, in _wait_for_tstate_lock
        assert self._is_stopped
    AssertionError
    2017-12-05  23:06:31 INFO     CP Server Thread-15 [05/Dec/2017:23:06:31] HTTP
    Request Headers:
      Remote-Addr: 192.168.99.45
      ACCEPT-ENCODING: gzip, deflate
      UPGRADE-INSECURE-REQUESTS: 1
      REFERER: http://zentrale:8383/backend/plugins.html
      HOST: zentrale:8383
      ACCEPT-LANGUAGE: de-DE,de;q=0.9,en-US;q=0.8,en;q=0.7,lb;q=0.6
      CONNECTION: keep-alive
      COOKIE: PHPSESSID=sci2lbhpa9r3nmlptun3koug20
      ACCEPT: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8
      DNT: 1
      USER-AGENT: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.94 Safari/537.36
    2017-12-05  23:06:31 INFO     CP Server Thread-15 192.168.99.45 - - [05/Dec/2017:23:06:31] "GET /backend/threads.html HTTP/1.1" 500 611 "http://zentrale:8383/backend/plugins.html" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.94 Safari/537.36"

    #2
    Den Fehler kann ich in meiner Installation nicht nachvollziehen. Der wird auch aus den Tiefen von Python geworfen.

    Um das Thema einzugrenzen: Welche Plugins nutzt Du? Kannst Du mal die meisten Plugins (natürlich bis auf das backend) disablen und dann schauen ob die Thread Ansicht dann geht?
    Viele Grüße
    Martin

    There is no cloud. It's only someone else's computer.

    Kommentar


      #3
      Mach mal einen neuen Pull für das Backend. Ich habe den AssertionError abgefangen (das ist kein Fix für den Fehler, sondern hilft nur bei der Eingrenzung, wo der Fehler her kommt).

      Nun sollte die Liste angezeigt werden und in der Spalte 'Aktiv' wird bei dem den Fehler auslösenden Thread 'AssertionError' angezeigt.
      Viele Grüße
      Martin

      There is no cloud. It's only someone else's computer.

      Kommentar


        #4
        Schön die Seite geht jetzt auf... Denke das hier hat den Fehler verursacht:
        _TimeoutMonitor 140247459428096 Ja
        CP Server (18 threads) Ja
        Dummy-27 140246560786176 AssertionError
        HTTPServer (2 threads) Ja
        idle (5 threads) Ja
        Main 140247938688768 Ja
        Scheduler 140247869904640 Ja
        Das ist die Ausgabe... der Dummy-27 ist mein Callback von dem zwave Plugin... wieso der so genannt wird verstehe ich auch nicht.

        Kommentar


          #5
          Ok, das hat schon mal bei der Eingrenzung geholfen. Wie hast Du den Thread denn erzeugt? Vielleicht kommen wir darüber dem Problem näher.
          Viele Grüße
          Martin

          There is no cloud. It's only someone else's computer.

          Kommentar


            #6
            Es wäre auch hilfreich, wenn Du deinen Thread benennst, so dass man ihn dem Plugin zuordnen kann:
            threadliste.png
            Viele Grüße
            Martin

            There is no cloud. It's only someone else's computer.

            Kommentar


              #7
              Also die Funktion wird in run() folgendem Kommando an das Event gebunden:

              Code:
              from pydispatch import dispatcher  # <- steht oben in der Datei
              
              dispatcher.connect(self.zwave_value_update, ZWaveNetwork.SIGNAL_VALUE_CHANGED)
              Das ist dann doch eigentlich gar kein Thread?

              Kommentar


                #8
                Ich kenne pydispatch nicht. Alle Plugins mit eigenen Threads (die ich kenne) setzen auf threading auf.
                Viele Grüße
                Martin

                There is no cloud. It's only someone else's computer.

                Kommentar


                  #9
                  hmm.. ich kenne mich ja auch nicht aus

                  Aber ohne den pydispatch kann ich nicht auf openzwave events reagieren.

                  Siehe dieses kleine Demo-Skript:

                  https://github.com/OpenZWave/python-...hello_world.py

                  Kommentar

                  Lädt...
                  X