Ankündigung

Einklappen
Keine Ankündigung bisher.

Vermeidung mehrfacher Parallelausführung

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

    [callidomus] Vermeidung mehrfacher Parallelausführung

    Hallo,

    hat jemand ne gute Idee um einen Sperrmechanismus für Logiken zu implementieren.

    In sh habe ich das immer über Lockfiles auf Filesystemebene gemacht aber es gibt doch bestimmt eine elegantere Lösung in cd ?


    sigpic
    Christian Huck
    Tel.: 089 / 122 80 995
    Email: mail@homeintelligence.de
    Web: www.homeintelligence.de

    #2
    Sollte mit einer Semaphore gehen. Such mal in der Phyton Hilfe danach.

    sollte so aussehen. Wo man das bei Logicken initialisieren kann weis ich jetzt aber nicht vielleicht kann ja da waldemar oder marcus was sagen.

    Code:
    from threading import Semaphore
    
    sema = Semaphore() # die muss erst mal angelegt werden sollte nur einmal gemacht werden.
    
    if(self._sema.acquire(blocking=False)):
     # dein code  der nicht doppelt ausgeführt werden soll.          
     sema.release()
    Zuletzt geändert von heckmannju; 04.12.2016, 14:06.

    Kommentar


      #3
      ... wenn ich länger drüber nachdenke...ich kann ja auch einfach ein "Sperr-Item" dafür anlegen.

      Aber dann muss ich dafür immer ein Item haben.
      Dachte da gäb's vielleicht was Fertiges out-of-the callidomus box
      sigpic
      Christian Huck
      Tel.: 089 / 122 80 995
      Email: mail@homeintelligence.de
      Web: www.homeintelligence.de

      Kommentar


        #4
        Hallo Christian,

        ich schreibe dazu etwas auf die Wunschliste.

        Bis bald

        Marcus

        Kommentar


          #5
          Hi,
          ​​​​​​bei meiner logick für die 433mhz Steckdosen bräuchte ich auch sowas wenn die alle zur gleichen Zeit loslegen tut es nicht.

          Ich sehe drei Möglichkeiten entweder es gibt eine Möglichkeit das man in einer logick auf ein semaphoren Objekt zugreifen kann um das zu serialisieren. Oder du machst es irgentwie von außen das eine logick halt der Reihe nach abgearbeitet werden oder ich schreibe ein Plugin da habe ich alle Möglichkeiten.

          VG Jürgen

          Kommentar


            #6
            Hallo,

            ich kann das mit dem nächsten größeren Update einbauen, allerdings würde ich dann nur unterbinden das eine Logik mehrmals zur gleichen Zeit läuft. Die Logiken würden aber nicht in einer Queue gespeichert, sprich wenn die Logik bereits läuft führt eine weiteres triggern nicht zum ausführen.

            Bis bald

            Marcus

            Kommentar


              #7
              Okay, dann bau ich mir für die Funkschalter ein Plugin.
              VG Jürgen

              Kommentar

              Lädt...
              X