Ankündigung

Einklappen
Keine Ankündigung bisher.

- √ - ical plugin, ssl.py, The read operation timed out

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

  • valleyman
    antwortet
    Hi Marcus,
    bist ein Schatz.
    Habe gerade gerade aktualisiert, und (nachdem ich begriffen habe das
    ich den Parameter nicht in der plugin.conf eintragen muss) mit 3 Sekunden
    angefangen zu probieren.
    Ergebnis:
    10 Aufrufe über CLI und alle fehlerlos.
    Aus meiner Sicht ist das Problem gelöst ==> Haken

    Vielen Dank und Grüße
    Sven

    Einen Kommentar schreiben:


  • callidomus
    antwortet
    Hi Sven,

    in develop habe ich das Plugin erweitert. Dort kann man timeout=X einen Wert in Sekunden für den Timeout eingeben.

    Bis bald

    Marcus

    Einen Kommentar schreiben:


  • valleyman
    antwortet
    ... ich muss den Thread nochmal nach oben bringen, da ich jetzt eine gewisse
    Langzeit-Erfahrung habe.
    Ergebnis:
    an 2 von 7 Tagen funktioniert es die Abfrage, in den anderen 5 Fällen nicht.
    Es scheint also an äußeren Bedingungen (Netzperformance, Server Antwortzeit...) zu liegen.

    Fehler bleibt:
    Code:
    2014-04-19 04:00:02 ERROR    00_kalender  Logic: 00_kalender, File: /usr/lib/python3.2/ssl.py, Line: 293, Method: read, Exception: The read operation timed out
    Traceback (most recent call last):
      File "/usr/smarthome/lib/scheduler.py", line 339, in _task
        exec(obj.bytecode)
      File "/usr/smarthome/logics/00_kalender.py", line 10, in <module>
        events = sh.ical('https://www.google.com/calendar/ical/hier mein user/hier mein key/basic',delta=2)
      File "/usr/smarthome/plugins/ical/__init__.py", line 57, in __call__
        ical = self._sh.tools.fetch_url(ics, username=username, password=password)
      File "/usr/smarthome/lib/tools.py", line 78, in fetch_url
        resp = conn.getresponse()
      File "/usr/lib/python3.2/http/client.py", line 1052, in getresponse
        response.begin()
      File "/usr/lib/python3.2/http/client.py", line 346, in begin
        version, status, reason = self._read_status()
      File "/usr/lib/python3.2/http/client.py", line 308, in _read_status
        line = str(self.fp.readline(_MAXLINE + 1), "iso-8859-1")
      File "/usr/lib/python3.2/socket.py", line 287, in readinto
        return self._sock.recv_into(b)
      File "/usr/lib/python3.2/ssl.py", line 399, in recv_into
        return self.read(nbytes, buffer)
      File "/usr/lib/python3.2/ssl.py", line 293, in read
        v = self._sslobj.read(len, buffer)
    socket.timeout: The read operation timed out
    @Marcus:
    Hast Du eine Idee wie man die TimeOut Dauer nach oben setzt?

    Grüße
    Sven

    Einen Kommentar schreiben:


  • valleyman
    antwortet
    Nachtrag:
    Ich habe jetzt die privaten Links neu generiert.
    Ergebnis:
    Ging zweimal nicht einmal schon und dann wieder nicht. (getestet über CLI und rr in kurzen Abständen)

    ... seltsam.
    (Kann das ein Timing / TimeOut Problem sein? würde ja zur Fehlermeldung passen.)

    Grüße
    Sven

    Einen Kommentar schreiben:


  • valleyman
    antwortet
    Hi Marcus,

    Beim Öffnen der URL im Browser wird die Datei Basic heruntergeladen (Download)

    (Habe natürlich darauf geachtet dass es keine Anmeldedaten von mir mehr aktiv sind)

    Grüße
    Sven

    Einen Kommentar schreiben:


  • callidomus
    antwortet
    Hi Sven,

    was passiert, wenn Du die URL im Browser eingibst? Klappt das dann?

    Wollte Google nicht die API totmachen?

    Bis bald

    Marcus

    Einen Kommentar schreiben:


  • - √ - ical plugin, ssl.py, The read operation timed out

    Hallo zusammen,

    ich habe seit gut 6 Monaten ohne Probleme das ical plugin und eine
    Logik in Betrieb welche diverse Aktionen in Abhängigkeit von Kalendereinträgen steuert. (Rollo, "Müllampe", ...)

    /Plauder an
    Heute morgen hätten wir fast verschlafen weil sh.py fälschlicherweise
    davon ausging dass die erste Schulstunde unseres Sohnes ausfällt.
    /Plauder aus

    Wegen Fritzbox bin ich (allerdings schon länger) auf Develop, ansonsten habe ich in der letzten Zeit nichts an sh.py geschraubt. (Nein, gar nichts)

    ein Blick ins Log bringt das Folgende zu Tage:
    Code:
    2014-04-09 04:00:02 ERROR    00_kalender  Logic: 00_kalender, File: /usr/lib/python3.2/ssl.py, Line: 293, Method: read, Exception: The read operation timed out
    Traceback (most recent call last):
      File "/usr/smarthome/lib/scheduler.py", line 339, in _task
        exec(obj.bytecode)
      File "/usr/smarthome/logics/00_kalender.py", line 10, in <module>
        events = sh.ical('https://www.google.com/calendar/ical/hier-meine-mail/private-hier mein key/basic',delta=2)
      File "/usr/smarthome/plugins/ical/__init__.py", line 57, in __call__
        ical = self._sh.tools.fetch_url(ics, username=username, password=password)
      File "/usr/smarthome/lib/tools.py", line 78, in fetch_url
        resp = conn.getresponse()
      File "/usr/lib/python3.2/http/client.py", line 1052, in getresponse
        response.begin()
      File "/usr/lib/python3.2/http/client.py", line 346, in begin
        version, status, reason = self._read_status()
      File "/usr/lib/python3.2/http/client.py", line 308, in _read_status
        line = str(self.fp.readline(_MAXLINE + 1), "iso-8859-1")
      File "/usr/lib/python3.2/socket.py", line 287, in readinto
        return self._sock.recv_into(b)
      File "/usr/lib/python3.2/ssl.py", line 399, in recv_into
        return self.read(nbytes, buffer)
      File "/usr/lib/python3.2/ssl.py", line 293, in read
        v = self._sslobj.read(len, buffer)
    socket.timeout: The read operation timed ou
    die zugehörige Logik (vielleicht nicht schön / optimal, aber funktioniert seit Monaten):
    Code:
    #!/usr/bin/env python
    #
    #siehe https://knx-user-forum.de/smartvisu/30789-zeitschaltuhr-mit-google-kalender-steuern.html
    
    now = sh.now()
    today = sh.now().date()
    tomorrow = today + datetime.timedelta(days=1)
    
    
    events = sh.ical('https://www.google.com/calendar/ical/hier-meine-mail/private-hier mein key/basic',delta=2)
    
    #Schalter zurücksetzen
    sh.mjm.status.muell(0)
    sh.mjm.status.feiertag(0)
    sh.mjm.status.ferien(0)
    sh.mjm.status.erstestundefrei(0)
    
    for day in events:
        logger.info("Date: {0}".format(day))
        for event in events[day]:
            estart = event['Start'] + datetime.timedelta(hours=+1)
            eend = event['End'] + datetime.timedelta(hours=+1)
            logger.info(event['Summary'])
            logger.info(event['Start'])
            logger.info(event['End'])
            #Müllbenachrichtigung
            if 'Rest' in event['Summary'] or 'Bio' in event['Summary'] or 'Flach' in event['Summary'] or 'Rund' in event['Summary']:
                if now + datetime.timedelta(days=1) >= estart:
                    if now + datetime.timedelta(days=1) <= eend:
                        logger.info("Müllswitch EIN")
                        logger.info(event['Summary'])
                        logger.info(event['Description'])
                        logger.info(event['Location'])
                        logger.info(event['Start'])
                        logger.info(event['End'])
                        sh.mjm.status.muell(1)
            #Feriensteuerung
            if 'ferien' in event['Summary']:
                if now >= estart:
                    if now <= eend:
                        logger.info("Ferienswitch EIN")
                        logger.info(event['Summary'])
                        logger.info(event['Description'])
                        logger.info(event['Location'])
                        logger.info(event['Start'])
                        logger.info(event['End'])
                        logger.info(event['Summary'])
                        sh.mjm.status.ferien(1)
            #Feiertagssteuerung
            if 'Feiertag' in event['Description']:
                if now >= estart:
                    if now <= eend:
                        logger.info("Feiertagsswitch EIN")
                        logger.info(event['Summary'])
                        logger.info(event['Description'])
                        logger.info(event['Location'])
                        logger.info(event['Start'])
                        logger.info(event['End'])
                        sh.mjm.status.feiertag(1)
            #Stundenplansteuerung
            if event['Summary'] == 'erste Stunde fällt aus':
                if now >= estart:
                    if now <= eend:
                        logger.info("erste Stunde fällt aus: EIN")
                        logger.info(event['Summary'])
                        logger.info(event['Description'])
                        logger.info(event['Location'])
                        logger.info(event['Start'])
                        logger.info(event['End'])
                        sh.mjm.status.erstestundefrei(1)
    und die logic.conf
    Code:
    [00_kalender]
        filename = 00_kalender.py
        crontab = init | 00 04 * *
    Kann mir jemand helfen?

    Danke vorab & Grüße
    Sven
Lädt...
X