El 02/03/2011 16:42, Oswaldo Hernández escribió:
El 01/03/2011 20:15, Sergio Fernández escribió:
¿por qué no le echas un vistazo al módulo daemon...?
http://pypi.python.org/pypi/python-daemon/
Ya le he echado un vistazo a ese módulo, pero sólamente funciona bajo
Unix. Gracias.
2011/3/1 marco<pyt...@diezplus.com>:
Hola a todos!!
Tengo la siguiente duda.
Necesito lanzar un proceso que quede residente en memoria y que cada
cierto
tiempo ejecute algo,
debería quedar tipo demonio de linux o tipo TSR (Terminate and Stay
Resident).
Terminate and Stay Resident ... Ufff hace mas de 10 años que no veia
eso ;)
Utilizo python 2.6 sobre Windows 7.
Mirad el siguiente ejemplo,
#leer_com.py###########################
import threading, time
def espera():
while True:
time.sleep(15)
# comprobaciones varias
# etc
print "comprobando..."
p = threading.Thread(target = espera,)
p.setDaemon(True)
p.start()
######################################
Si lo ejecuto en una shell de python, sin problema, cada 15 segundos me
ejecuta la función espera,
mientras tanto yo puedo seguir trabajando con cualquier cosa desde
esa misma
shell.
Ahora bien, si lo ejecuto desde una línea de comandos del sistema, ej.:
c:\>python leer_com.py
acaba el programa y no hace nada de nada. Lo he convertido a
ejecutable con
py2exe y más de
lo mismo, no funciona. Si hago p.join() en el script queda en
espera pero
no vuelve al interprete de comandos
que lo que yo necesito. Necesito lanzarlo y a ejecutar otra cosa.
El programa termina porque se alcanza el final y ya no tiene nada que
hacer. Aunque hayas lanzado el tread debes mantenerlo vivo, un simple
'while True: pass' al final hara lo que necesitas.
Para simular un daemon en windows puedes crear un servicio con py2exe
o simplemente hacer que se cargue al arrancar el equipo.
Saludos,
Ya se que ha de mantenerse vivo el thread, si hago p.join() o while True
como me aconsejas hace que se mantenga, pero el programa no finaliza. Lo
que yo necesito es lanzarlo desde una shell y que quede residente aunque
yo cierre la shell y que funcione bajo Windows 7. No quiero que sea un
servicio de windows, necesito que sea simple python sin acceso a API de
windows, lo que no se si esto será posible...
Gracias.
_______________________________________________
Python-es mailing list
Python-es@python.org
http://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/