Разрешить только один экземпляр скрипта python?

У меня есть сценарий python, который я хочу разрешить только один раз на машине. Я хочу, чтобы он печатал что-то вроде «Ошибка, уже запущен», если он уже запущен, независимо от того, работает ли он в фоновом режиме или в другой сессии ssh. Как мне это сделать? Вот мой сценарий.

import urllib, urllib2, sys num = sys.argv[1] print 'Calling' phones = [ 'http://phone1/index.htm', 'http://phone2/index.htm', 'https://phone3/index.htm', 'https://phone4/index.htm', 'https://phone5/index.htm' ] data = urllib.urlencode({"NUMBER":num, "DIAL":"Dial", "active_line":1}) while 1: for phone in phones: try: urllib2.urlopen(phone,data) # make call urllib2.urlopen(phone+"?dialeddel=0") # clear logs except: pass 

PS Я использую CentOS 5, если это имеет значение.

3 Solutions collect form web for “Разрешить только один экземпляр скрипта python?”

  1. Вы можете реализовать блокировку файла.
  2. Создайте временный файл в начале выполнения и проверьте, присутствует ли этот файл перед запуском скрипта.

Обратитесь к этому сообщению для ответа. Проверьте, работает ли скрипт python.

Вы можете установить единый пакет с pip install single пакетом, который будет использовать контрольную блокировку, чтобы гарантировать, что будет выполняться только один экземпляр команды, не оставляя за собой устаревшие файлы блокировки.

Вы можете вызвать его на свой скрипт следующим образом:

 single.py -c long-running-script arg1 arg2 

Вы можете заблокировать существующий файл, используя, например, стайку в начале вашего скрипта. Затем, если один и тот же сценарий запускается дважды, последний запуск блокируется. См. Также этот вопрос .

  • Как насчет наличия SingletonModel в Django?
  • Убедитесь, что запущен только один экземпляр класса
  • Как декораторы работают с классами в python
  • Поделитесь одним и тем же модулем
  • Синглеты Google App Engine (Python)
  • Singleton через модули
  • Выполнение порядка метода в модуле python
  • Python singleton, возьмите 2
  • Python: мышление модуля и его переменных как одноэлементный подход - чистый подход?
  • Поддерживает ли Python что-то вроде буквальных объектов?
  • Python: объект класса Singleton для сохранения списка между импортом? (Как администратор django)
  • Python - лучший язык программирования в мире.