2015-11-13 75 views
2

我在Python 2.7中使用Tornado Web Server(版本4.1)來創建REST Web應用程序。我的一個請求處理程序(web.RequestHandler)使用多部分/混合內容類型處理由多個HTTP請求組成的批量請求,並將其組合爲一個HTTP請求。我現在有能接收POST請求,並解析多部分/混合內容成這個樣子個別要求批量請求處理程序:如何在Tornado請求中執行Tornado請求

GET /contacts/3 HTTP/1.1 
Accept: application/json 

我的問題是,會是什麼將這些內部的一個好辦法批量處理請求,請求Tornado可以在我的請求處理程序中爲服務?我想在我的批處理請求處理程序中收集響應,並且一旦這些請求全部完成,就返回包含所有批處理響應的單個多部分/混合響應。

使用HTTPClient執行批處理請求感覺像是過度殺傷。看起來我應該能夠構建一個請求對象並將它注入到Web中。處理應用程序 - 但是我不知道如何執行此操作。謝謝!

回答

2

龍捲風對此沒有任何直接的支持。瀏覽HTTP客戶端可能是最簡單的解決方案。但是,如果您真的有興趣避開該路線,請參閱解決方案草圖,該解決方案依賴於tornado.httputil模塊中定義的接口。

  1. 定義,通過保存參數writewrite_headers到內部緩衝區實現HTTPConnection接口的類。

  2. ApplicationHTTPServerConnectionDelegate。將它的start_request方法的連接類的實例作爲兩個參數來調用(第一個參數並不重要,但它應該是唯一的,因爲我們不會重複使用該連接)。

  3. start_request返回HTTPMessageDelegate。請撥打headers_received,data_received(用於POST/PUT)和finish方法來提出請求。一旦你調用finish,處理程序將運行並將調用回到連接對象中。

相關問題