Je voulais avoir un contrôle exclusif entre les processus facilement avec python, donc je l'ai implémenté avec un fichier de verrouillage. L'environnement que nous vérifions est le suivant.
--mac (OS X El Capitan version 10.11.5) --pip disponible
Une bibliothèque qui crée un fichier de verrouillage avec le nom spécifié et le contrôle exclusivement. Puisqu'il est géré par pid, lorsque le processus verrouillé se termine, l'état exclusif est libéré sans se fermer, il est donc facile à gérer même si une exception se produit. Je pense. Ci-dessous, installez comme d'habitude
$ pip install zc.lockfile
Il n'y a pas de signification particulière, mais elle est mise en œuvre avec un décorateur. Il ne peut pas être utilisé lorsque vous souhaitez traiter correctement le processus verrouillé (comme la sortie d'un journal ou l'attente). Pour ceux qui veulent de toute façon un contrôle exclusif.
lock.py
# -*- coding: utf-8 -*-
import sys
from zc import lockfile
from zc.lockfile import LockError
def lock_or_through(func):
'''Décorateur de contrôle exclusif par fichier de verrouillage
Par le processus lui-même s'il est verrouillé
'''
def lock(*args, **kwargs):
lock = None
try:
lock = lockfile.LockFile('lock')
except LockError:
print("locked")
return
func(*args, **kwargs)
#Si le pid cible n'est pas valide, il ne sera pas verrouillé, il n'y a donc pratiquement aucun problème même si une exception se produit.
lock.close()
return lock
@lock_or_through
def main(sys_argv):
"""Traitement que vous souhaitez contrôler exclusivement avec un fichier verrou"""
print('process you need')
if __name__ == '__main__':
main(sys.argv)
Recommended Posts