2
在Akhet使用金字塔,我如何在後執行方法已將響應返回給客戶端?我相信這是用Pylons中的__after__
方法完成的。我試圖執行數據庫查詢,並不希望它阻止請求響應。如何在金字塔中完成響應後執行方法?
在Akhet使用金字塔,我如何在後執行方法已將響應返回給客戶端?我相信這是用Pylons中的__after__
方法完成的。我試圖執行數據庫查詢,並不希望它阻止請求響應。如何在金字塔中完成響應後執行方法?
您可以使用response callback您的情況。
編輯後Michael Merickel的評論:響應回調阻止添加的請求,但你不應該擔心該回調阻止其他請求,因爲每個請求運行在不同的線程。如果你仍然不需要用回調來阻止請求,你可以產生一個不同的線程或進程(如果你能負擔得起的話),或者查看下面註釋中提到的消息隊列系統。
在響應對象生成後執行響應回調以及Pylons中的__after__,但不會錯誤地認爲在此執行的代碼仍然在請求的帶內發生,並且在返回響應對象之前到WSGI服務器。 Pyramid和Pylons都不提供執行帶外代碼的解決方案。您需要使用外部排隊系統或線程來完成此操作。 – 2011-12-19 00:00:14
感謝您指出阻止與回調的請求。我更新了考慮到你的評論的答案。我仍然想清楚說明Pyramid請求在不同的線程中運行,並且在很多情況下,這足以處理非阻塞問題,而不是使回調真正無阻塞。 – 2011-12-19 07:26:14