Exklusive Steuerung mit Sperrdatei in Python

Ich wollte mit Python einfach die exklusive Kontrolle zwischen Prozessen haben, deshalb habe ich es mit einer Sperrdatei implementiert. Die Umgebung, die wir überprüfen, ist wie folgt.

--mac (OS X El Capitan Version 10.11.5) --pip verfügbar

Was zu verwenden

Eine Bibliothek, die eine Sperrdatei mit dem angegebenen Namen erstellt und diese ausschließlich steuert. Da es von pid verwaltet wird, wird der exklusive Status beim Beenden des gesperrten Prozesses freigegeben, ohne geschlossen zu werden, sodass es auch dann einfach zu handhaben ist, wenn eine Ausnahme auftritt. Ich denke. Unten wie gewohnt installieren

$ pip install zc.lockfile

Anwendungsbeispiel

Es gibt keine besondere Bedeutung, aber es wird mit einem Dekorateur implementiert. Es kann nicht verwendet werden, wenn Sie den gesperrten Prozess ordnungsgemäß verarbeiten möchten (z. B. Ausgabe eines Protokolls oder Warten). Für diejenigen, die sowieso exklusive Kontrolle wollen.

lock.py


# -*- coding: utf-8 -*-
import sys
from zc import lockfile
from zc.lockfile import LockError


def lock_or_through(func):
    '''Exklusiver Kontrolldekorateur per Sperrdatei
Durch den Prozess selbst, wenn gesperrt
    '''
    def lock(*args, **kwargs):
        lock = None
        try:
            lock = lockfile.LockFile('lock')
        except LockError:
            print("locked")
            return

        func(*args, **kwargs)

        #Wenn die Ziel-PID nicht gültig ist, wird sie nicht gesperrt, sodass praktisch kein Problem besteht, selbst wenn eine Ausnahme auftritt.
        lock.close()

    return lock


@lock_or_through
def main(sys_argv):
    """Verarbeitung, die Sie ausschließlich mit einer Sperrdatei steuern möchten"""
    print('process you need')

if __name__ == '__main__':
    main(sys.argv)

Recommended Posts

Exklusive Steuerung mit Sperrdatei in Python
Exklusiver Dateizugriff zwischen Prozessen in Python
Dateioperationen in Python
Dateiverarbeitung in Python
Dateimanipulation mit Python
Lesen Sie Tabellendaten in einer PDF-Datei mit Python
Vorsichtsmaßnahmen beim Umgang mit Kontrollstrukturen in Python 2.6
Schaben mit Selen in Python
Betreiben Sie LibreOffice mit Python
Schaben mit Chromedriver in Python
Debuggen mit pdb in Python
Zeichnen Sie eine netCDF-Datei mit Python
Umgang mit Sounds in Python
Scraping mit Selen in Python
Scraping mit Tor in Python
Tweet mit Bild in Python
Kombiniert mit Ordnungszahl in Python
Führen Sie eine Python-Datei mit relativem Import in PyCharm aus
Laden Sie die CSV-Datei mit Python herunter
Datei im Dialog mit Python auswählen → Dateinamen im Meldungsfeld anzeigen
Zahlenerkennung in Bildern mit Python
Extrahieren Sie die xz-Datei mit Python
Testen mit Zufallszahlen in Python
Manipulation des Datei- / Ordnerpfads in Python
GOTO in Python mit erhabenem Text 3
Arbeiten mit LibreOffice in Python: Importieren
[Python] Mit Python in eine CSV-Datei schreiben
Speichern Sie die Binärdatei in Python
[Mit Python automatisiert! ] Teil 1: Datei einstellen
Implementierter Dateidownload mit Python + Bottle
Scraping mit Selen in Python (Basic)
Linebot-Erstellung und Dateifreigabe mit Python
CSS-Analyse mit cssutils in Python
Ausgabe in eine CSV-Datei mit Python
Numer0n mit Elementen, die mit Python erstellt wurden
Öffnen Sie UTF-8 mit Stückliste in Python
Erstellen Sie eine Binärdatei in Python
Verwenden Sie rospy mit virtualenv in Python3
Verwenden Sie Python in pyenv mit NeoVim
Heatmap mit Dendrogramm in Python + Matplotlib
Lesen Sie Dateien parallel zu Python
Passwort für Lehrbuch mit Python generieren
Versuchen Sie die Frequenzsteuerungssimulation mit Python
Verwenden Sie OpenCV mit Python 3 in Window
ORC, Parkettdateivorgänge in Python
[Mit Python automatisiert! ] Teil 2: Dateivorgang
Bis zum Umgang mit Python in Atom
Beginnen Sie mit Python mit Blender
Arbeiten mit DICOM-Bildern in Python
Lesen Sie die Datei in Python mit einem relativen Pfad aus dem Programm
Spiralbuch in Python! Python mit einem Spiralbuch! (Kapitel 14 ~)
Erstellen einer einfachen Power-Datei mit Python
Versuchen Sie, sich mit Python bei qiita anzumelden
Stresstest mit Locust in Python geschrieben
Python3> im Schlüsselwort> Wahr mit teilweiser Übereinstimmung?
Geräteüberwachung durch On-Box Python von IOS-XE
CSV-Datei mit Python lesen (CSV-Datei herunterladen und analysieren)
Versuchen Sie, mit Binärdaten in Python zu arbeiten
Überprüfen Sie die Existenz der Datei mit Python