Ankündigung

Einklappen
Keine Ankündigung bisher.

SmartVISU PageCache löschen per Logic

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

    [Codebeispiel] SmartVISU PageCache löschen per Logic

    Nabend,

    da ich aktuell noch die ein oder andere Änderung an meiner VISU vornehme, aber auf den PageCache nicht verzichten will habe ich mir eine Logic gebastelt, mit der ich über einen Trigger in der Visu den PageCache löschen kann.

    Außerdem habe ich mir für meine Seiten-Konfiguration ein Github-Repository angelegt, so dass ich auch mal ohne Netzwerk-Mount (oder unterwegs ) die Seiten editieren kann und über die Logic die Änderungen auf meinen Server pullen kann.

    Grundsätzlich keine große Kunst die Logic, aber evtl. kann es ja noch jemand brauchen.

    Wer die Git-Anbindung nicht braucht löscht einfach den Teil zwischen "#Checkout.." und "# Delete..."


    Wichtig zum Löschen des PageCaches ist es das der User unter dem Smarthome.py läuft Schreibrechte für den "temp" Ordner der VISU hat. (Ich hab bei mir einfach den User mit in die Gruppe "www-data" gepackt)

    Code:
    #!/usr/bin/env python
    #!/usr/bin/python
    
    import subprocess
    import os
    import sys
    
    # Checkout latest pages version
    process = subprocess.Popen( "/usr/bin/git pull" , cwd = os.path.dirname( '/var/www/pages/bernau/' ), shell = True, stdout = subprocess.PIPE, stderr = subprocess.PIPE )
    (out, error) = process.communicate()
    
    logger.error(str(error)) 
    logger.info(str(out))
    
    # Delete everything reachable from the directory named in "top",
    # assuming there are no symbolic links.
    # CAUTION:  This is dangerous!  For example, if top == '/', it, it
    # could delete all your disk files.
    for root, dirs, files in os.walk('/var/www/temp/', topdown=False):
        for name in files:
            os.remove(os.path.join(root, name))
        for name in dirs:
            os.rmdir(os.path.join(root, name))

    In der Visu habe ich dann eine Seite (nicht über die normale Navi erreichbar) mit nem einfachen Trigger gepackt:

    Code:
    {{ basic.trigger('triggerUpdate', 'updateSmartVISU', '', 'refresh', 1, 'midi') }}

    Charmanten Abend,

    Lars

    #2
    Hi!

    Coole Idee, Danke. Die Logik funktioniert bei mir, wenn ich per telnet "tr triggerUpdate" (bei mir heißt die Logik nicht "updateSmartVISU") aufrufe. Wenn ich das allerdings per Visu versuche, kommt folgender Fehler:

    Code:
    2016-07-29 15:23:57,202 DEBUG    Main         192.168.0.XXX:65534 sent '{"cmd":"logic","name":"triggerUpdate","val":""}' -- __init__.py:json_parse:270
    2016-07-29 15:23:57,204 WARNING  Main         Client 192.168.0.XXX:65534 requested invalid logic: triggerUpdate -- __init__.py:json_parse:305
    Es scheint also irgendwie am html zu liegen. Das sieht bei mir so aus:

    Code:
    {{ basic.trigger('trigger_update', 'triggerUpdate', 'Cache', 'refresh', '', 'midi') }}
    Hat jemand eine Idee warum das nicht funktioniert?

    Danke,
    //giase

    Kommentar


      #3
      Hast Du denn in Deiner logic.conf beim entsprechenden Eintrag auch ein visu_acl = rw gesetzt?

      Kommentar


        #4
        Ahh, Danke! Das war's

        Kommentar


          #5
          Eigentlich wäre das Löschen des Caches ja eine sinnvolle Funktion für die SV selbst.
          Ein Button in der Konfiguration würde ja reichen.
          Ich habe dies mal als Issue #85 erfasst.

          Kommentar

          Lädt...
          X