P ython — один из самых популярных языков программирования в мире. Он используется для разработки веб-сайтов, написания сценариев, машинного обучения, анализа данных и многого другого.
В этой статье объясняется, как проверить, какая версия Python установлена в вашей операционной системе с помощью командной строки. Это может быть полезно при установке приложений, написанных на Python, для которых требуется определенная версия Python.
Проверьте, работает ли python script
У меня есть демон python, запущенный как часть моего веб-приложения/Как я могу быстро проверить (используя python), если мой демон запущен, а если нет, запустите его?
Я хочу сделать это таким образом, чтобы исправить любые сбои демона, и поэтому script не нужно запускать вручную, он будет автоматически запускаться, как только он будет вызываться, а затем останется работать.
Как я могу проверить (используя python), если мой script запущен?
Лучший ответ:
Оставьте pidfile где-нибудь (например,/tmp). Затем вы можете проверить, работает ли процесс, проверяя, существует ли PID в файле. Не забудьте удалить файл, когда вы завершите работу, и проверьте его при запуске.
Как запустить Python IDLE и сделать первую программу (для новичков)
#/usr/bin/env python import os import sys pid = str(os.getpid()) pidfile = «/tmp/mydaemon.pid» if os.path.isfile(pidfile): print «%s already exists, exiting» % pidfile sys.exit() file(pidfile, ‘w’).write(pid) try: # Do some actual work here finally: os.unlink(pidfile)
Затем вы можете проверить, работает ли процесс, проверяя, является ли содержимое /tmp/mydaemon.pid существующим процессом. Monit (упомянутый выше) может сделать это для вас, или вы можете написать простую оболочку script, чтобы проверить ее для вас, используя код возврата из ps.
ps up `cat /tmp/mydaemon.pid ` >/dev/null echo «Running» || echo «Not running»
Для дополнительного кредита вы можете использовать модуль atexit, чтобы гарантировать, что ваша программа очистит свой pidfile при любых обстоятельствах (когда убиты, подняты исключения и т.д.).
Техника, которая удобна в системе Linux, использует доменные сокеты:
import socket import sys import time def get_lock(process_name): # Without holding a reference to our socket somewhere it gets garbage # collected when the function exits get_lock._lock_socket = socket.socket(socket.AF_UNIX, socket.SOCK_DGRAM) try: get_lock._lock_socket.bind(‘