Python betiÄŸi olarak linux servis/daemon
Merhaba,
Python bir betik (ubuntu) servis (daemon) olarak çalışacak linux anlatmaya çalışıyorum.
Web gibi çeşitli yolları vardır:
http://pypi.python.org/pypi/python-daemon/
Terbiyeli Unix artalan süreci yakalamak zor, ama gerekli adımları kadar her daemon program için aynıdır. DaemonContext bir örnek program için davranış ve yapılandırılmış bir süreç çevreye tutar; bağlama yöneticisi olarak örnek daemon bir devlet girmek için kullanın.
http://www.jejik.com/articles/2007/02/a_simple_unix_linux_daemon_in_python/
Python senaryomu özellikle ubuntu linux ile entegre etmek istiyorum ancak benim çözüm bir init ile bir kombinasyonudur.d script
#!/bin/bash
WORK_DIR="/var/lib/foo"
DAEMON="/usr/bin/python"
ARGS="/opt/foo/linux_service.py"
PIDFILE="/var/run/foo.pid"
USER="foo"
case "$1" in
start)
echo "Starting server"
mkdir -p "$WORK_DIR"
/sbin/start-stop-daemon --start --pidfile $PIDFILE \
--user $USER --group $USER \
-b --make-pidfile \
--chuid $USER \
--exec $DAEMON $ARGS
;;
stop)
echo "Stopping server"
/sbin/start-stop-daemon --stop --pidfile $PIDFILE --verbose
;;
*)
echo "Usage: /etc/init.d/$USER {start|stop}"
exit 1
;;
esac
exit 0
ve python:
import signal
import time
import multiprocessing
stop_event = multiprocessing.Event()
def stop(signum, frame):
stop_event.set()
signal.signal(signal.SIGTERM, stop)
if __name__ == '__main__':
while not stop_event.is_set():
time.sleep(3)
Şimdi sorum eğer bu yaklaşım doğru ise. Herhangi bir ek sinyal kolu var mı? Bu bir "terbiyeli daemon işlem Unıx".
CEVAP
Daemon sürekli çalışan bir yol (bazı olay döngüsü,, ne olursa olsun çarpık) olduğu varsayımıyla, upstart kullanmayı deneyebilirsiniz.
İşte size bir örnek varsayımsal bir Python hizmet için config: sonradan görme
description "My service"
author "Some Dude <blah@foo.com>"
start on runlevel [234]
stop on runlevel [0156]
chdir /some/dir
exec /some/dir/script.py
respawn
Siz komut dosyası olarak kaydedin./etc/init basit conf kerelik yapın
$ sudo initctl reload-configuration
$ sudo start script
stop script ile durdurabilirsiniz. Yukarıda sonradan görme conf diyor ne olursa ölür sanki yeniden doğmuş gibi, bu hizmeti başlatın ve sonra da yeniden sağlamaktır.
Sinyal işleme - süreci doğal olarak SIGTERM yanıt. Varsayılan olarak bu, özellikle kendi sinyal işleyicisi yüklü yoksa ele alınmalıdır.

Nasıl bir python betiği bir hizmet ya ...
Windows bir hizmet olarak bir Python b...
Bir python betiği ile bir ekran görünt...
Neden C ön işlemci word "linux&qu...
Nasıl bir Python betiği profilini çıka...