mam tę prostą aplikację kolby:kolby i Web.py zarówno powiesić na 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)
Moduł prolog_handler rozpoczyna sesję z triplestore i obciążeń pewne zasady. Ma także funkcję atexit, która kończy sesję i wyświetla komunikat podobny do "Zamykanie ...". Uruchomiłem serwer z podpowiedzi bash pod numerem python myapp.py
. Ilekroć trafiam CTRL-C, aby zatrzymać serwer, nic się nie dzieje. Nie wrócę do znaku zachęty bash i nie widzę komunikatu "Zamykanie ...". Próbowałem również zrobić to z Web.py z tymi samymi wynikami.
że prolog_handler robi to dosłownie tak proste, jak to:
tstore = openPrologSession()
rules = ...
def cleanUp():
print "Closing..."
tstore.endSession()
atexit.register(cleanUp)
Więc dlaczego jest tak trudno po prostu wykonać zadanie atexit?
PS: jeśli skomentuję wszystkie rzeczy związane z otwarciem sesji Prologu i kończę je, i po prostu opuść część, która drukuje komunikat "Zamykanie ...", widzę komunikat "Zamykanie ...", gdy Wcisnąłem CTRL-C i wróciłem do zachęty bash. To działa zgodnie z oczekiwaniami. Ale jaki jest sens ateita, jeśli nie mogę zrobić z nim nic użytecznego?
Aha! Fajny człowiek, dzięki! –
@John Peter Thompson Garcés: Dzięki. Sprawdź, czy to działa dla Ciebie. – pyfunc
Tak, działało zgodnie z oczekiwaniami! –