我想使用Django構建以上載爲中心的應用程序。一種方法是使用nginx的上傳模塊(非阻塞),但它有問題。 Node.js應該是這類應用程序的一個很好的候選者。但是我怎樣才能讓node.js充當upload_handler() for Django?我不確定在哪裏查找示例?Node.js作爲Django的自定義(流式)上傳處理程序
2
A
回答
2
好吧,我不喜歡的主題或任何方面的專家,但我想我的理解是,nginx的是,在提供您的Django應用程序的網絡服務器的前端運行一個代理,對不對?
您可以構建一個相同的簡單node.js服務器 - 在端口80上偵聽,等到請求完全發送到服務器,然後將其轉發到爲Django應用程序提供服務的Web服務器。如果你的問題是web服務器線程正在被長時間運行的上傳使用,那麼我認爲這將解決這個問題。
下面是一些代碼 - 就在我的頭頂
var http = require('http');
var server = http.createServer(function (req, res) {
var headers = req.headers;
var url = req.url;
var method = req.method;
var body = '';
req.addListener('data', function(chunk) {
body += chunk;
});
req.addListener('end', function() {
// at this point the request is completely uploaded (including files)
// so it can be forwarded to the django webserver
var dj_client = http.createClient(8000, 'localhost');
var dj_req = dj_client.request(method, url, headers);
dj_req.addListener('response', function (dj_res) {
// here the response have been received from the django server
// so we can return that to the waiting client
res.writeHead(dj_res.status, dj_res.headers);
dj_res.addListener('data', res.write);
dj_res.addListener('end', res.close);
});
// send the request to the django webserver
dj_req.write(body);
dj_req.close();
});
});
server.listen(80);
0
讓node.js的文件寫入到磁盤和代理上載POST所以你的Django視圖知道要連同「_node_file」值的Django在哪裏獲取文件。
相關問題
- 1. 訪問自定義Django上傳處理程序中的其他表單域
- 2. 加載Node.JS的自定義CSS處理程序
- 3. IIS 7.5上的自定義處理程序不起作用
- 4. 覆蓋作爲ScrollViewer的自定義事件處理程序
- 5. 自定義流式傳輸
- 6. Blueimp jQuery文件上傳和symfony2:問題與自定義上傳處理程序
- 7. 在Apache和mod_wsgi中的Django自定義錯誤處理程序
- 8. Java VM是否提供自定義流處理程序,如PHP
- 9. Django上傳處理
- 10. Django:自定義404處理程序返回404狀態代碼
- 11. 傳遞自定義參數的事件處理程序
- 12. 從Django的自定義上傳處理程序中獲取文件上載的最終目的地
- 13. Django的自定義404處理器
- 14. C#自定義事件處理程序
- 15. 自定義標籤處理程序
- 16. 自定義PHP錯誤處理程序
- 17. php自定義錯誤處理程序
- 18. 自定義錯誤處理程序
- 19. 自定義JQuery延遲處理程序
- 20. Net-SNMP自定義MIB處理程序
- 21. GridButtonColumn自定義處理程序
- 22. ASP.NET圖表自定義處理程序
- 23. 自定義路由處理程序
- 24. AppleScript自定義處理程序語法
- 25. registerClientScriptBlock在自定義處理程序中?
- 26. C - 編寫自定義處理程序
- 27. 自定義web.config節處理程序
- 28. 自定義事件處理程序
- 29. 自定義圖像處理程序
- 30. 自定義@RequestParam類型處理程序
好像你在記憶中緩衝整個事物。這不是流式傳輸。我並不是那麼想進入Django,但它似乎會接受大塊的下載。 – 2010-04-02 07:36:54
老兄!那是f $&*(#awsome ...... :) – 2010-04-12 01:07:22
@Kuroki - 是的,但是我讀了原文,好像那是關鍵。爲了避免在上傳期間停止web服務器線程,這是避免直接流到django應用程序,而是用node.js緩衝它。 – AHM 2010-04-23 13:23:00