Ankündigung

Einklappen
Keine Ankündigung bisher.

Python 3.2 Migration in develop bzw. 1.0 Release

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

    Hallo Robert,

    ich kann das Problem leider nicht nachstellen. Ich habe aber den Code an der Stelle robuster gemacht.

    Melde Dich bitte, falls es nach einem Update noch einmal passiert.

    Bis bald

    Marcus

    Kommentar


      *Meldung*

      Code:
      2013-10-11 21:59:08,436 INFO     System       System.Smarthome.Laufzeit = 0h 25m via Logic None -- item.py:_update:254
      2013-10-11 21:59:08,438 INFO     System       Threads (8): Scheduler: 1, System: 1, Main: 1, 1w-io: 1, idle: 3, 1w-sen: 1 -- system.py:<module>:23
      2013-10-11 21:59:08,472 INFO     System       Objects (Top 10): tuple: 92, WeakSet: 113, ExtensionFileLoader: 114, str: 151, SourceFileLoader: 161, BaseException: 196, Exception: 244, Item: 474, Condition: 507, object: 1439 -- system.py:<module>:44
      gc: collectable <FeedParser 0x7f52bd22a310>
      gc: collectable <cell 0x7f52bd22b520>
      gc: collectable <dict 0x7f52bd2f5320>
      gc: collectable <tuple 0x7f52bd246210>
      gc: collectable <function 0x7f52bcfd6320>
      gc: collectable <BufferedSubFile 0x7f52bd22a390>
      gc: collectable <list 0x7f52bd2215f0>
      gc: collectable <dict 0x7f52bd2ab320>
      gc: collectable <list 0x7f52bd2ab050>
      gc: collectable <list 0x7f52bd2ab128>
      gc: collectable <generator 0x7f52bcfcd370>
      gc: collectable <method-wrapper 0x7f52bd22a150>
      gc: collectable <HTTPMessage 0x7f52bd22a290>
      gc: collectable <dict 0x7f52bcf11320>
      gc: collectable <list 0x7f52bd2ab248>
      gc: collectable <list 0x7f52bd2ab098>
      2013-10-11 21:59:08,495 WARNING  System       Garbage: [<email.feedparser.FeedParser object at 0x7f52bd22a310>, <cell at 0x7f52bd22b520: FeedParser object at 0x7f52bd22a310>, {'_headersonly': False, '_parse': <method-wrapper '__next__' of generator object at 0x7f52bcfcd370>, '_factory': <class 'http.client.HTTPMessage'>, 'policy': Compat32(), '_cur': None, '_msgstack': [], '_input': <email.feedparser.BufferedSubFile object at 0x7f52bd22a390>, '_factory_kwds': <function FeedParser.__init__.<locals>.<lambda> at 0x7f52bcfd6320>, '_last': <http.client.HTTPMessage object at 0x7f52bd22a290>}, (<cell at 0x7f52bd22b520: FeedParser object at 0x7f52bd22a310>,), <function FeedParser.__init__.<locals>.<lambda> at 0x7f52bcfd6320>, <email.feedparser.BufferedSubFile object at 0x7f52bd22a390>, [], {'_partial': '', '_closed': True, '_lines': [], '_eofstack': []}, [], [], <generator object _parsegen at 0x7f52bcfcd370>, <method-wrapper '__next__' of generator object at 0x7f52bcfcd370>, <http.client.HTTPMessage object at 0x7f52bd22a290>, {'_payload': '', 'defects': [], 'epilogue': None, '_unixfrom': None, '_headers': [('Server', 'nginx/0.8.55'), ('Date', 'Fri, 11 Oct 2013 19:44:37 GMT'), ('Content-Type', 'text/xml; charset=utf-8'), ('Transfer-Encoding', 'chunked'), ('Connection', 'keep-alive'), ('Vary', 'Accept-Encoding'), ('Cache-Control', 'private'), ('Alternate-Protocol', '443:quic')], '_charset': None, 'policy': Compat32(), '_default_type': 'text/plain', 'preamble': None}, [('Server', 'nginx/0.8.55'), ('Date', 'Fri, 11 Oct 2013 19:44:37 GMT'), ('Content-Type', 'text/xml; charset=utf-8'), ('Transfer-Encoding', 'chunked'), ('Connection', 'keep-alive'), ('Vary', 'Accept-Encoding'), ('Cache-Control', 'private'), ('Alternate-Protocol', '443:quic')], []] -- system.py:<module>:53
      2013-10-11 21:59:08,496 DEBUG    System       Load: 0.01, 0.03, 0.05 -- system.py:<module>:58
      2013-10-11 21:59:08,497 INFO     System       System.Last = 0.03 via Logic None -- item.py:_update:254
      2013-10-11 21:59:08,509 INFO     System       System.Laufzeit = 3d 12h 58m via Logic None -- item.py:_update:254
      Wieder kam die eMail korrekt an. Das einzige was evtl. auch noch reinspielen könnte: Momentan scheint sh.py die Zeitzone nicht richtig zu haben. Die eMail ist von 21:44, das (Debug-)log zeigt auch korrekt die Zeiten, aber in dem Garbage-Dump und auch die contabs werden jeweils zwei Stunden zu früh angezeigt/ausgeführt...

      Viele Grüße
      Robert

      Kommentar


        Hallo Robert,

        sorry, ich hatte die Änderungen gestern nicht eingecheckt. Gegen Abend ist mir der Fehler aufgefallen und ich habe es eingecheckt.

        Die Zeit passt schon. Das ist GMT.

        Was mich irritiert, sind die http.client.HTTPMessage und nginx in dem Garbage.
        Du verschickst nicht zufällig eine Webseite?


        Bis bald

        Marcus

        Kommentar


          Hi Marcus,

          vielen Dank für deine Hilfe!

          Code der eMail und NMA aufruft:

          PHP-Code:
          # check if presence changed to true while all entrances were locked
          if ('Anwesenheit' in trigger['source']) and sh.Ueberwachung.Anwesenheit() and sh.Ueberwachung.Verriegelung.Alle():
              
          sh.mail('robert.bxxxxx@gmx.net''Bewegung ohne Öffnung''Bewegung ohne Öffnung')
              
          sh.nma('Bewegung ohne Öffnung''Bewegung ohne Öffnung'
          Ist halt nix drin außer Umlauten. Habe jetzt gerade noch mal geupdated - außer boxcar und artnet kam da aber nix...

          Dann ein frischer Bug:

          Code:
          2013-10-12 05:03:41 ERROR    series       Problem updating series for {'update': True, 'item': 'Wechselrichter.DC_Leistung_String2', 'sid': 'Wechselrichter.DC_Leistung_String2|avg|1d|now', 'func': 'avg', 'end': 'now', 'step': 0, 'start': 1381543311185}: list index out of range
          Traceback (most recent call last):
            File "/usr/local/smarthome/plugins/visu/__init__.py", line 234, in update_series
              reply = self.items[series['params']['item']].series(**series['params'])
            File "/usr/local/smarthome/plugins/sqlite/__init__.py", line 329, in _series
              lval = tuples[-1][1]
          IndexError: list index out of range
          2013-10-12 05:03:42 INFO     Modbus       Waermepumpe.Warmwasser.Ist = 43.2 via Modbus Reg 1681
          2013-10-12 05:03:42 INFO     Scheduler    Adding worker thread. Total: 7
          2013-10-12 05:03:42 INFO     Scheduler    Current Threads: Main, Scheduler, Modbus, 1w-io, Modbus, Modbus, series, Modbus, idle, Thread-7
          2013-10-12 05:03:47 INFO     Modbus       Waermepumpe.Warmwasser.Ist = 43.3 via Modbus Reg 1681
          2013-10-12 05:04:43 INFO     Scheduler    Adding worker thread. Total: 8
          2013-10-12 05:04:43 INFO     Scheduler    Current Threads: Main, Scheduler, Modbus, 1w-io, Modbus, Thread-8, Modbus, series, Modbus, Modbus, series
          2013-10-12 05:05:45 INFO     Scheduler    Adding worker thread. Total: 9
          Bei 30 steht der Karren wie schon bekannt.

          Viele Grüße
          Robert

          Kommentar


            Zitat von Robert Beitrag anzeigen
            Code der eMail und NMA aufruft:
            na, das Speicherleck ist in dem NMA Plugin! Fix erst einmal das, dann sehen wir weiter ob bei dem Mail-Versenden noch ein Problem ist.
            Du kannst ja mal lib/tools.py fetch_url ansehen, oder verwenden.

            Bis bald

            Marcus

            Kommentar


              Python 3.2 Migration in develop bzw. 1.0 Release

              Also irgendwas ist aber bei der Timezone schon schief. Ein Item-Crontab 19:15 wird als 19:15:00+00 im Scheduler eingetragen und auch nicht um 19:15 Lokalzeit ausgeführt. Fände ich aber richtig.

              Gruß,

              der Jan
              KNX, DMX over E1.31, DALI, 1W, OpenHAB, MQTT

              Kommentar


                Zitat von JNK Beitrag anzeigen
                Also irgendwas ist aber bei der Timezone schon schief. Ein Item-Crontab 19:15 wird als 19:15:00+00 im Scheduler eingetragen und auch nicht um 19:15 Lokalzeit ausgeführt. Fände ich aber richtig.
                Ack.

                Wie gesagt, crontab ist (45 5 * 1,2,3,4,5), aber wird erst um 7:45 ausgeführt. Gleiches mit dem Verriegeln der Haustür um 21 Uhr -> 23 Uhr. Hatte schon ein dpkg-reconfigure tzdata gemacht - ist aber alles korrekt!?

                Kommentar


                  Hallo,

                  @Robert: Entschuldige bitte, ich habe Deinen 'Bug-Report' falsch interpretiert.

                  Ich habe den Timezone Bug gefixed.

                  Weiterhin habe ich die sqlite series robuster gemacht. Das sollte nicht mehr zum Stop führen.

                  Bis bald

                  Marcus

                  Kommentar


                    Ich habe leider immer noch diverse Probleme mit der Stabilität...

                    Ein Problem: Die Garbage-Collection scheint sich irgendwie selber zu replizieren. Es werden immer mehr Backticks ('\') den eigentlichen Objekten voran- und nachgestellt, so dass ich jetzt zum dritten mal Log-Dateien von über 2GB hatte, die dann zum Exitus führten. Also nicht (nur) fehlender Speicher, sondern sh.py schreibt sich nen Wolf...

                    Dann habe ich noch:
                    Code:
                    2013-10-13 23:59:39 ERROR    series       SQLite: problem generating series value: '[]': list index out of range
                    Traceback (most recent call last):
                      File "/usr/local/smarthome/plugins/sqlite/__init__.py", line 336, in _series
                        lval = tuples[-1][1]
                    IndexError: list index out of range
                    danach gehen die workerthreads hoch bis Stillstand.

                    Was das Speicherleck im NMA-Plugin angeht:

                    MIttlerweile ist das NMA-Plugin quasi eine Kopie des Prowl-Plugins (evtl. könnte man das doch über zwei Parametersätze in einem Dict zusammenfassen?):

                    PHP-Code:
                    #!/usr/bin/env python3
                    # vim: set encoding=utf-8 tabstop=4 softtabstop=4 shiftwidth=4 expandtab
                    #########################################################################
                    # Copyright 2011 KNX-User-Forum e.V.            https://knx-user-forum.de/
                    #########################################################################
                    #  This file is part of SmartHome.py.   http://smarthome.sourceforge.net/
                    #
                    #  SmartHome.py is free software: you can redistribute it and/or modify
                    #  it under the terms of the GNU General Public License as published by
                    #  the Free Software Foundation, either version 3 of the License, or
                    #  (at your option) any later version.
                    #
                    #  SmartHome.py is distributed in the hope that it will be useful,
                    #  but WITHOUT ANY WARRANTY; without even the implied warranty of
                    #  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
                    #  GNU General Public License for more details.
                    #
                    #  You should have received a copy of the GNU General Public License
                    #  along with SmartHome.py. If not, see <http://www.gnu.org/licenses/>.
                    #########################################################################

                    import logging
                    import urllib
                    .parse
                    import http
                    .client

                    logger 
                    logging.getLogger('NMA')


                    class 
                    NMA():
                        
                    _host 'www.notifymyandroid.com'
                        
                    _api '/publicapi/notify'

                        
                    def __init__(selfsmarthomeapikey=None):
                            
                    self._apikey apikey
                            self
                    ._sh smarthome

                        def run
                    (self):
                            
                    pass

                        def stop
                    (self):
                            
                    pass

                        def __call__
                    (selfevent=''description=''priority=Noneurl=Noneapikey=Noneapplication='SmartHome'):
                            
                    data = {}
                            
                    headers = {'User-Agent'"SmartHome.py"'Content-Type'"application/x-www-form-urlencoded"}
                            
                    data['event'] = event[:1000].encode()
                            
                    data['description'] = description[:1000].encode()
                            
                    data['application'] = application[:256].encode()
                            if 
                    apikey:
                                
                    data['apikey'] = apikey
                            
                    else:
                                
                    data['apikey'] = self._apikey
                            
                    if priority:
                                
                    data['priority'] = priority
                            
                    if url:
                                
                    data['url'] = url[:2000]
                            try:
                                
                    conn http.client.HTTPSConnection(self._hosttimeout=4)
                                
                    conn.request("POST"self._apiurllib.parse.urlencode(data), headers)
                                
                    resp conn.getresponse()
                                
                    conn.close()
                                if (
                    resp.status == 200):
                                    
                    logger.debug("NMA returns: Notification submitted.")
                                
                    elif (resp.status == 400):
                                    
                    logger.warning("NMA returns: The data supplied is in the wrong format, invalid length or null.")
                                
                    elif (resp.status == 401):
                                    
                    logger.warning("NMA returns: None of the API keys provided were valid.")
                                
                    elif (resp.status == 402):
                                    
                    logger.warning("NMA returns: Maximum number of API calls per hour exceeded.")
                                
                    elif (resp.status == 500):
                                    
                    logger.warning("NMA returns: Internal server error. Please contact our support if the problem persists.")
                                else:
                                    
                    logger.error("NAME returns unknown HTTP status code = {0}".format(p.getcode()))
                            
                    except Exception as e:
                                
                    logger.warning("Could not send NMA notification: {0}. Error: {1}".format(evente)) 
                    Wie kann da was über bleiben? Bzw. wenn, dann müsste das Prowl-Plugin auch Probleme haben!?

                    Ist evtl. das conn.close(9 ein Problem, wenn es vorher schon eine Exception gab? Allerdings habe ich im ganzen Log keine Fehlermeldung (Exception bzw. Teilstring der Fehlermeldung).

                    Grüße
                    Robert

                    Kommentar


                      Hallo Robert,

                      deaktiviere bitte die System-Logik von mir. In develop gibt es einen Item Bereich "env" der die entsprechenden Informationen generiert. Darin sollte auch das Problem der selbst referenzierenden Warnings behoben sein.

                      Kannst Du mir evtl. das komplette Log zur Verfügung stellen (z.B. Webserver).
                      Mit den Schnipseln kann ich nur sehr schwer Zusammenhänge erkennen.

                      bzgl des NMA Plugins, war es schon vorher identisch mit dem Prowl Plugin?
                      Und wie lauten die Fehlermeldungen, bevor der Garbage erzeugt wird?

                      Ich denke, ich habe gerade ein Problem bzgl der ausufernden WorkerThreads gefunden. Mal sehen.

                      Bis bald

                      Marcus

                      Kommentar


                        Zitat von mknx Beitrag anzeigen
                        Ich denke, ich habe gerade ein Problem bzgl der ausufernden WorkerThreads gefunden. Mal sehen.
                        Oh ja, das war ein böser Bug. Er sollte nun weg sein.

                        Bis bald

                        Marcus

                        Kommentar


                          Kann auch mein Speicher-Problem damit zusammenhängen?
                          Momentan sieht's gut aus...

                          Kommentar


                            Hab ich was verpasst und das Config-Format hat sich geändert, oder geht da was schief?

                            Code:
                            [wez]
                                [[fenster]]
                                    [[[garten]]]
                                        [[[[rolllade]]]]
                                            [[[[[position]]]]]
                                                type = num
                                                visu = yes
                                                knx_dpt = 5.001
                                                knx_cache = 3/1/150
                                                knx_send = 3/0/150
                                                crontab = 30 21 * * = 100 | 0 7 * 0,1,2,3,4 = 0
                            daraus macht der Scheduler:

                            Code:
                            2013-10-14 21:57:58,857 DEBUG    Main         wez.fenster.strasse.rolllade.position next time: 2013-10-15 21:30:00+02:00 -- scheduler.py:_next_time:289
                            Und vergisst dann auch die Rollläden hochzufahren. Nebenbei:

                            Code:
                                                crontab = 21:30<sunset+60m = 100 | 0 7 * 0,1,2,3,4 = 0
                            fährt die Rollläden nie herunter. Und ein (zugegeben fehlerhaftes)

                            Code:
                                                crontab = 21:30 = 100 | 0 7 * 0,1,2,3,4 = 0
                            löst eine Exception aus und dann geht nix mehr.

                            Gruss,

                            der Jan
                            KNX, DMX over E1.31, DALI, 1W, OpenHAB, MQTT

                            Kommentar


                              Zitat von mknx Beitrag anzeigen
                              deaktiviere bitte die System-Logik von mir.
                              Gemacht, hatte ich schon gesehen und auf meiner Liste.

                              Zitat von mknx Beitrag anzeigen
                              Kannst Du mir evtl. das komplette Log zur Verfügung stellen (z.B. Webserver).
                              Leider nein, hatte die 2,7 GB (sic!) entsorgt.

                              Zitat von mknx Beitrag anzeigen
                              bzgl des NMA Plugins, war es schon vorher identisch mit dem Prowl Plugin?
                              Und wie lauten die Fehlermeldungen, bevor der Garbage erzeugt wird?
                              Vorher war es schon quasi-identisch, bei der Adaption für Python3 habe ich es fast komplett übernommen. Jetzt habe ich den Code sogar noch gleich sortiert um Abweichungen zu finden. Evtl. sollten die Plugins als "Notification"-Plugin zusammengefasst werden?
                              Fehlermeldungen gibt es keine! D.h. die Exception tritt nicht auf, genauso wenig wie HTTP-Fehlercodes. Hatte es jetzt erstmal deaktiviert, da momentan der WAF leidet...

                              Ich habe noch zwei Meldungen aufgetan, die als "Errors" deklariert sind, aber scheinbar keine weiteren Folgen haben:
                              Code:
                              2013-10-15 12:51:37 ERROR    Main         WebSocketHandler: [Errno 110] Die Wartezeit für die Verbindung ist abgelaufen
                              2013-10-15 12:51:37 ERROR    Main         Connections: 14
                              2013-10-15 18:23:47 ERROR    Main         WebSocketHandler: [Errno 110] Die Wartezeit für die Verbindung ist abgelaufen
                              2013-10-15 18:23:47 ERROR    Main         Connections: 14
                              Viele Grüße
                              Robert

                              Kommentar


                                Hallo Robert,

                                Zitat von Robert Beitrag anzeigen
                                da momentan der WAF leidet...
                                das tut mir Leid. Kann ich nachvollziehen ich verbringen momentan auch sehr viele Zeit vor dem Computer.

                                Bis bald

                                Marcus

                                Kommentar

                                Lädt...
                                X