![](/img/trans.png)
[英]How to best perform Multiprocessing within requests with the python Tornado server?
[英]How to perform Tornado requests within a Tornado request
我正在使用Tornado Web Server (4.1 版)和 Python 2.7 創建一個 REST Web 應用程序。 我的請求處理程序之一 (web.RequestHandler) 使用多部分/混合內容類型處理由多個 HTTP 請求組合成一個 HTTP 請求的批處理請求。 我目前有批處理請求處理程序能夠接收 POST 請求並將多部分/混合內容解析為如下所示的單個請求:
GET /contacts/3 HTTP/1.1
Accept: application/json
我的問題是,將這些內部批處理請求轉換為 Tornado 可以從我的請求處理程序中提供服務的請求的好方法是什么? 我想在我的批處理請求處理程序中收集響應,一旦這些請求全部完成,返回一個包含所有批處理響應的單個多部分/混合響應。
使用 HTTPClient 來執行批處理請求感覺有點矯枉過正。 似乎我應該能夠構建一個請求對象並將其注入 web.Application 進行處理——但是我不知道如何做到這一點。 謝謝!
Tornado 對此沒有任何直接支持。 通過 HTTP 客戶端可能是最簡單的解決方案。 但是,如果您真的有興趣避免這條路線,這里有一個解決方案的草圖,它依賴於tornado.httputil
模塊中定義的接口。
通過將write
和write_headers
的參數write_headers
到內部緩沖區中,定義一個實現HTTPConnection
接口的類。
該Application
是一個HTTPServerConnectionDelegate
。 使用連接類的實例作為兩個參數調用它的start_request
方法(第一個參數並不重要,但它應該是唯一的,因為我們不會重用“連接”該對象很好)。
start_request
返回一個HTTPMessageDelegate
。 調用它的headers_received
、 data_received
(用於 POST/PUT)和finish
方法來發出您的請求。 調用finish
,處理程序將運行並調用回您的連接對象。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.