Django を使用してアップロード中心のアプリを構築したいと考えています。これを行う 1 つの方法は、nginx のアップロード モジュール (ノンブロッキング) を使用することですが、問題があります。Node.js は、このタイプのアプリケーションに適していると考えられています。しかし、 node.jsを Django の upload_handler()として機能させるにはどうすればよいですか? 例を探す場所がわかりません。
1641 次
2 に答える
2
さて、私はこのテーマの専門家ではありませんが、私が理解していると思う方法では、nginx は、django アプリを提供する Web サーバーの前で実行されるプロキシですよね?
同じことを行う単純な node.js サーバーを構築できます。ポート 80 でリッスンし、リクエストがサーバーに完全に送信されるまで待ってから、Django アプリを提供する 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);
于 2010-03-14T01:28:34.020 に答える
0
node.js にファイルをディスクに書き込み、'_node_file' 値とともに Django へのアップロード POST をプロキシして、Django ビューがファイルの取得場所を認識できるようにします。
于 2010-05-02T17:22:00.250 に答える