2011-11-07 32 views
2

我試圖實現一個數據處理模塊。收集POST數據,處理它並將該數據POST到外部URL

的情況是,

  1. 首先用戶會發布一些數據。
  2. 用戶發佈的數據需要處理,並且需要添加一些更多信息
  3. 此處理的POST數據應該發送到外部URL而無需用戶干預。

外部URL將只接受POST請求。

請建議我一種將此POST數據發送到外部URL的方法。

更新

至於建議,我開始使用的要求。

當i收集的初始POST數據來看,我編譯與用戶另一數據對象發佈的數據(處理後),並加入更多的數據到對象,並執行後請求作爲波紋管

req = requests.post(post_url, data=post_obj) 

返回STATUS_CODE是200 但數據(post_obj)似乎並沒有被髮送到POST_URL。 post_url提示它沒有收到POST數據。

當我檢查了REQ對象,

req.request.data似乎有post_obj信息和req.request.url有POST_URL

req.url有它提示了該REDIRECT_URL post_url沒有收到任何數據。

我的問題是,

如何實際發佈數據? 需要在視圖中返回的對象是什麼?

如果我在發佈數據(requests.post方法)的方式是錯誤的。請建議我適當的方式。

注意:將數據發佈到post_url後,它將被重定向到不同的頁面。

+0

你可能想提出另一個問題。否則,請發佈更多代碼。 –

+1

我認爲你需要'data = urllib.urlencode(post_obj)'來正確地爲POST請求編碼對象 –

回答

0

您可以使用標準庫urllib2來執行第二次POST。

我也聽說了requests library,這應該是更容易比的urllib2用的好東西。

+0

看起來像我正在尋找的解決方案。非常感謝你。 – CrazyLazy

2

使用Urllib2mechaniserequests(誰所有使用內置的urllib2蟒蛇httplib的)或pycurl(它使用的libcurl)做的職位對外部資源。

請求是最簡單的工作,機械化非常適合填寫表單和像瀏覽器一樣編程,urllib2是底層庫,因此知道pycurl是(imo)是最後的手段也很重要,因爲它不是特別的維護

您應該考慮使用一個隊列來處理服務器 - >第三方步驟,然後向用戶異步報告任務已完成,否則如果第三方應用程序需要長時間響應。

+0

從你的回覆中,機械化符合我的法案......現在就試試這個。 – CrazyLazy