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