我有一個問題,我希望可以用Django中的某種形式的關閉鉤子解決。Django框架 - 是否有可以訂閱的關機事件?
我仍然使用Python/Django開發初學者,並幫助學習我已經給自己設定了發展彗星的項目/反轉,在瀏覽器中運行Ajax風格的聊天網站。瀏覽器不斷查詢服務器是否有任何消息。當服務器收到輪詢請求時,它會檢查是否有任何消息在等待,如果沒有消息,它將嘗試獲取已獲取的對象的線程鎖定。這會導致處理請求的線程阻塞,直到收到消息並釋放前面提到的鎖。
我關閉服務器時出現問題。此時我正在使用開發服務器(python manage.py runserver)。如果有一個線程被上面解釋的進程阻塞,那麼服務器不會關閉。
有沒有一種方法可以在服務器嘗試關閉時執行代碼,以便我可以釋放任何等待的線程?
我看了下面的similar question但是它沒有幫助我。有人猜測,這樣的事件掛鉤不存在,但沒有明確的答案。我已經高高在上,但一直沒有運氣。
我使用Python 2.7和Django 1.5。
感謝任何幫助,您可以提供
不太確定這是如何實現的,如果這樣做會工作,但我會把它放在那裏 - 關閉的消息,所有線程都會讀和理解爲「哦,我應該停止」? – dmg 2013-03-18 08:17:48
@DJV:但我怎麼知道發送該消息? – 2013-03-18 08:35:58
不太確定,開發服務器的'Ctrl + C'(a.k.a.' KeyboardInterrupt')的某種處理。對於不同的服務器,可能會想到不同的方法。我明白,這不是一個通用的方法,它不是通過Django完成的,但正如我所說的「我只是把它拋出去」。 – dmg 2013-03-18 08:39:43