tengo esta sencilla aplicación Frasco:Frasco y Web.py tanto colgar en atexit
from flask import Flask
import prolog_handler as p
app = Flask(__name__)
app.debug = False
@app.route('/')
def hello():
for rule in p.rules:
print rule
return 'hello'
if __name__ == '__main__':
app.run(host='0.0.0.0', port=8080)
El módulo prolog_handler inicia una sesión con un triplestore y cargas algunas reglas. También tiene una función atexit que finaliza la sesión e imprime un mensaje como "Cerrando ...". Comienzo el servidor desde el indicador bash con python myapp.py
. Cada vez que presiono CTRL-C para detener el servidor, no pasa nada. No me devuelven al mensaje bash, y no veo impreso el mensaje "Cerrando ...". También traté de hacer esto con Web.py con los mismos resultados.
El prolog_handler que hace es literalmente tan simple como esto:
tstore = openPrologSession()
rules = ...
def cleanUp():
print "Closing..."
tstore.endSession()
atexit.register(cleanUp)
¿Por qué es tan difícil de sólo realizar una tarea atexit?
PD: si comento todo sobre abrir la sesión de Prolog y finalizarla, y simplemente dejar la parte que imprime el mensaje "Cerrando ...", entonces veo el mensaje "Cerrando ..." cuando Presiono CTRL-C y me devuelven al indicador bash. Eso funciona como se esperaba ¿Pero de qué sirve atexit si no puedo hacer nada útil con eso?
Aha! Hombre genial, gracias! –
@John Peter Thompson Garcés: Gracias. Verifica si esto funciona para ti. – pyfunc
¡Sí, funcionó como se esperaba! –