Empêcher le double lancement de la commande django

La commande django est une commande exécutée par "python manage.py ~". Par défaut, de nombreuses commandes utiles telles que shell sont fournies. Bien que cela ne soit pas expliqué en détail ici, il est possible de créer des commandes personnalisées. Et, la commande personnalisée, etc. est souvent exécutée en tant que lot tel que crontab, mais pour une raison quelconque, j'essaierai de ne pas démarrer en double.

custom_command.py


import sys
import commands
from django.core.management.base import BaseCommand

def is_process_exist(process_name):
    """
Renvoie True si ce processus est en cours d'exécution
    """
    output = commands.getoutput("ps -ef | grep '%s' | grep -v grep | wc -l" % (process_name))
    is_exist = int(output) >= 2

    return is_exist


class Command(BaseCommand):
    def handle(self, *args, **options):
        #Double contrôle au démarrage
        if is_process_exist(__name__.split('.')[-1]):
            sys.exit('duplication!')

        #Le traitement suivant ~

Recommended Posts

Empêcher le double lancement de la commande django
Résumé des commandes fréquemment utilisées de django (débutant)
Empêcher le double lancement en Python (version améliorée)
Commande d'initialisation de la base de données Django
Lancer mon application Django
L'histoire que les commandes Django ignorent USE_I18N
Impressions de toucher Django
[Série Django] Commandes de base
Utilisation (minimale) de django logger
Suppression de double envoi avec Django
[Django] Organiser les commandes et les rôles