簡體   English   中英

如何在 Tornado 請求中執行 Tornado 請求

[英]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模塊中定義的接口。

  1. 通過將writewrite_headers的參數write_headers到內部緩沖區中,定義一個實現HTTPConnection接口的類。

  2. Application是一個HTTPServerConnectionDelegate 使用連接類的實例作為兩個參數調用它的start_request方法(第一個參數並不重要,但它應該是唯一的,因為我們不會重用“連接”該對象很好)。

  3. start_request返回一個HTTPMessageDelegate 調用它的headers_receiveddata_received (用於 POST/PUT)和finish方法來發出您的請求。 調用finish ,處理程序將運行並調用回您的連接對象。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM