की सुंदर शटडाउन मैं निम्नलिखित कोड का उपयोग कर रहा शान (https://gist.github.com/wonderbeyond/d38cd85243befe863cdde54b84505784 से लिया गया) मेरी बवंडर आवेदन को बंद करने का:तूफान IOLoop
def sig_handler(servers, sig, frame):
io_loop = tornado.ioloop.IOLoop.instance()
def stop_loop(deadline):
now = time.time()
if now < deadline and (io_loop._callbacks or io_loop._timeouts):
logging.info('Waiting for next tick')
print("CALL BACKS")
print(io_loop._callbacks)
print("TIMEOUTS")
print(io_loop._timeouts)
io_loop.add_timeout(now + 1, stop_loop, deadline)
else:
io_loop.stop()
logging.info("Shutting down.")
def shutdown():
logging.info("Stopping http servers")
# servers is a list of servers to stop
for s in servers:
s.stop()
logging.info("Will shutdown in %s seconds ...",
MAX_WAIT_SEC_BEFORE_SHUTDOWN)
stop_loop(time.time() + MAX_WAIT_SEC_BEFORE_SHUTDOWN)
logging.warning("Caught signal: %s", sig)
io_loop.add_callback_from_signal(shutdown)
मैं 10 सेकंड के लिए MAX_WAIT_SEC_BEFORE_SHUTDOWN निर्धारित किया है। Http सर्वर को बंद करने के बाद भी सर्वर को बंद करने के लिए हर बार पूर्ण 10 सेकंड लगते हैं। मैं उल्लेख किया है वहाँ हमेशा io_loop._timeouts
सूची उदा में आइटम हैं कि:
[<tornado.ioloop._Timeout object at 0x106b90408>, <tornado.ioloop._Timeout object at 0x106b904c8>, ...]
क्या io_loop._timeouts
में आइटम हैं? क्या मुझे उम्मीद है कि यह एक खाली सूची होगी या क्या मैं कुछ ऐसा नहीं रोक रहा हूं जो मेरे पास होना चाहिए?
क्या यह शट डाउन नियमित सामान्य है? क्या कोई अन्य कोड सुझा सकता है?
धन्यवाद बेन, हमेशा एक बहुत ही जानकारीपूर्ण उत्तर के रूप में। चियर्स –