sangue/django/locking_manage.py

24 lines
829 B
Python

from django.db import connection
import logging
import sys
from manage import main
logger = logging.getLogger("locking_manage")
logger.setLevel(logging.DEBUG)
formatter = logging.Formatter(
'%(asctime)-24s|%(levelname)-7s|%(name)-4s:%(lineno)-2d: %(message)s')
console_h = logging.StreamHandler(sys.stderr)
console_h.setLevel(logging.DEBUG)
console_h.setFormatter(formatter)
logger.addHandler(console_h)
with connection.cursor() as c:
# acquisisco un lock con una chiave che è unica per questa applicazione
logger.info("Acquisizione advisory lock:")
c.execute("select pg_advisory_lock(132306982255);")
logger.info("advisory lock acquisito.")
logger.info("Eseguo manage.py con argomenti %s", sys.argv)
main()
logger.info("Rilascio advisory lock")
# il lock viene rilasciato automaticamente