पर लटका मैं इस सरल बोतल एप्लिकेशन है:बोतल और Web.py दोनों 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)
prolog_handler मॉड्यूल एक triplestore और भार कुछ नियमों के साथ एक सत्र शुरू होता है। इसमें एक अवांछित फ़ंक्शन भी है जो सत्र समाप्त करता है और "बंद ..." जैसे संदेश को प्रिंट करता है। मैं python myapp.py
के साथ बैश प्रॉम्प्ट से सर्वर प्रारंभ करता हूं। जब भी मैं सर्वर को रोकने के लिए CTRL-C दबाता हूं, कुछ भी नहीं होता है। मैं बैश प्रॉम्प्ट पर वापस नहीं लौटाता हूं, और मुझे "बंद ..." संदेश मुद्रित नहीं दिखाई देता है। मैंने इसे एक ही परिणाम के साथ Web.py के साथ करने का प्रयास किया।
tstore = openPrologSession()
rules = ...
def cleanUp():
print "Closing..."
tstore.endSession()
atexit.register(cleanUp)
तो क्यों यह इतना मुश्किल सिर्फ एक atexit कार्य करने के लिए है:
कि prolog_handler करता सचमुच के रूप में इस के रूप में सरल है?
पीएस: अगर मैं प्रोल सत्र को खोलने और इसे समाप्त करने के बारे में सभी चीजों पर टिप्पणी करता हूं, और केवल उस भाग को छोड़ दें जो संदेश "बंद कर रहा है ..." तो मुझे "बंद ..." संदेश दिखाई देता है मैंने CTRL-C मारा और मैं बैश प्रॉम्प्ट पर वापस आ गया। यह उम्मीद के रूप में काम करता है। लेकिन अगर मैं इसके साथ कुछ भी उपयोगी नहीं कर सकता तो अचूकता का क्या मतलब है?
अहा! कूल मैन, धन्यवाद! –
@ जॉन पीटर थॉम्पसन गार्स: धन्यवाद। जांचें कि यह आपके लिए काम करता है या नहीं। – pyfunc
हाँ, यह अपेक्षित के रूप में काम किया! –