¿Puedo ejecutar un script de Python como un servicio?

¿Es posible ejecutar un script de Python como un servicio en segundo plano en un servidor web? Quiero hacer esto para la comunicación de socket.

Puedes convertirlo en un demonio. Hay un PEP para una solución más completa, pero he encontrado que esto funciona bien.

import os, sys def become_daemon(our_home_dir='.', out_log='/dev/null', err_log='/dev/null', pidfile='/var/tmp/daemon.pid'): """ Make the current process a daemon. """ try: # First fork try: if os.fork() > 0: sys.exit(0) except OSError, e: sys.stderr.write('fork #1 failed" (%d) %s\n' % (e.errno, e.strerror)) sys.exit(1) os.setsid() os.chdir(our_home_dir) os.umask(0) # Second fork try: pid = os.fork() if pid > 0: # You must write the pid file here. After the exit() # the pid variable is gone. fpid = open(pidfile, 'wb') fpid.write(str(pid)) fpid.close() sys.exit(0) except OSError, e: sys.stderr.write('fork #2 failed" (%d) %s\n' % (e.errno, e.strerror)) sys.exit(1) si = open('/dev/null', 'r') so = open(out_log, 'a+', 0) se = open(err_log, 'a+', 0) os.dup2(si.fileno(), sys.stdin.fileno()) os.dup2(so.fileno(), sys.stdout.fileno()) os.dup2(se.fileno(), sys.stderr.fileno()) except Exception, e: sys.stderr.write(str(e)) 

Es posible que desee revisar Twisted .

Existe el muy útil paquete Pypi, que es la base de mis demonios escritos en Python.

en XP y versiones posteriores, puede usar el progtwig sc.exe para usar cualquier archivo .exe como servicio:

 >sc create Creates a service entry in the registry and Service Database. SYNTAX: sc create [service name] [binPath= ]  ... CREATE OPTIONS: NOTE: The option name includes the equal sign. type=  (default = own) start=  (default = demand) error=  (default = normal) binPath=  group=  tag=  depend=  obj=  (default = LocalSystem) DisplayName=  password=  

Puede iniciar su pythonscript iniciando el intérprete de python con su script como argumento:

 python.exe myscript.py 

Suponiendo que esto sea para Windows, vea esta receta basada en srvany

Si estás hablando de Linux, es tan fácil como hacer algo como ./myscript.py &