Ankündigung

Einklappen

Serverwartung 21.2.



Am 21.2. im Laufe des späten Abends wird eine Serverwartung durchgeführt. Das Forum ist dadurch für gut zwei Stunden nicht erreichbar.
Es wird eine Wartungsseite geschaltet.

Mehr anzeigen
Weniger anzeigen

sicherstellen das Logik welche viele Trigger hat nur 1x läuft, keine paral. Instanzen

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

    sicherstellen das Logik welche viele Trigger hat nur 1x läuft, keine paral. Instanzen

    Problem:

    wenn 2x gleichzeitig xy1.Power & xy2.Power getriggert werden, läuft 2x Realy.py in Endlosschleife ...

    logic.conf
    Code:
    [Relais]
        filename   = Relais.py
        watch_item = *.Power # 10 verschiedene
    mein bisheriger Ansatz: file erzeugen, Logik laufen lassen, file löschen, sollte 2. parallele Instance eigentlich ausschließen, aber fkt. nicht 100 % ig

    relay.py
    Code:
    import random
    runlock = "/run/relay.run"
    wartezeit= random.randint(2,8)
    while (os.path.isfile(runlock)):
       logger.info("runlock exist, wait {0} sec".format(wartezeit) )
       time.sleep(wartezeit)
    os.mknod(runlock)
    logger.info("runlock do not exist ! start procedure")
    
    # eigentliche Logik
    
    os.remove(runlock)
    ist leider nicht immer erfolgreich !!!

    wer kennt eine bessere/sicherere Lösung ?

    #2
    Hast Du schon mal https://docs.python.org/3/library/th...l#lock-objects angeschaut?
    So könnte es gehen, teste mal:
    Code:
    from threading import Lock
    lock = Lock()
    
    with lock:
         #hier der thread lock code

    Kommentar


      #3
      oder so:
      Code:
      from threading import Lock
      lock = Lock()
      
      lock.acquire()
      try:
          # hier der thread lock code
      finally:
          lock.release()

      Kommentar


        #4
        Sowas macht man eigentlich mit einem semaphoren Objekt. Aber wo wird diese Objekt gespeichert. Gleiches gilt für das Lock Beispiel von cmalo.
        vg
        Jürgen

        Kommentar


          #5
          Danke bis jetzt klapts

          Kommentar

          Lädt...
          X