Разрешить только один экземпляр скрипта 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 

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

  • Почему шаблон Borg лучше, чем шаблон Singleton в Python
  • Являются ли Python пустыми унитазами?
  • Убедитесь, что запущен только один экземпляр класса
  • Создание синглета в Python
  • Есть простой, элегантный способ определения одиночных чисел?
  • Python: мышление модуля и его переменных как одноэлементный подход - чистый подход?
  • Деструктор в метаклассе Singleton object
  • Создание экземпляра Python singleton / object
  •  
    Interesting Posts for Van-Lav

    Делает ли pyGame 3d?

    Почему uncompiled, многократно использовались регулярные выражения, намного медленнее в Python 3?

    Как я могу получить virtualenv для создания исполняемых файлов Python с правильным sys.path с использованием Enthought Python Distribution?

    Как получить символический путь вместо реального пути?

    образное отображение дает ошибку в моей геометрии при сериализации

    В чем разница между соленой и полочкой?

    Python NLTK Наивный байесовский классификатор: каково основное вычисление, которое этот классификатор использует для ввода classifiy?

    Объект «NoneType» не имеет атрибута «sendall» PYTHON

    Отключить ведение журнала boto без изменения файлов boto

    Зашифрованные и безопасные контейнеры докеров

    Определение сообщения NDEF

    Как отредактировать стиль заголовка в Treeview (Python ttk)

    sqlalchemy подключиться к базе данных VPS

    Преобразование в временную метку unix Python

    Завершить сеанс терапии, если выполнено условие

    Python - лучший язык программирования в мире.