2017-11-20 28 views
0

私は、シンプルなWSGIサーバを実行しているWSGI ... Ajax呼び出し

from run import app 

if __name__ == "__main__": 
    app.run(threaded=True, debug=True) 

そして、私はGETリクエストでサーバーを打っていますよ、サーバは200を返します。メッセージを返しますが、データは返されません。私は壊れたパイプエラーラウンドを取得する必要ねじ切りオプションを使用していくつかの場所で読んだが、私の場合に役立つように見えていない

Error on request: 
Traceback (most recent call last): 
    File "/Library/Python/2.7/site-packages/werkzeug/serving.py", line 209, in run_wsgi 
execute(self.server.app) 
    File "/Library/Python/2.7/site-packages/werkzeug/serving.py", line 200, in execute 
write(data) 
    File "/Library/Python/2.7/site-packages/werkzeug/serving.py", line 175, in write 
self.send_header('Server', self.version_string()) 
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/BaseHTTPServer.py", line 401, in send_header 
self.wfile.write("%s: %s\r\n" % (keyword, value)) 
IOError: [Errno 32] Broken pipe 

次のエラーメッセージを取得します。誰にもアイデアはありますか?

フラスコのバージョンは0.12.2です。

!!! EDIT !!!

私が開発しているページのポイントは、リーフレットマップからユーザー定義座標を取得し、データベース(この場合はneo4j)を呼び出します。 APIはすべて郵便配達員でうまくいくので、クエリは正常に動作します。だから、問題は私のWebアプリケーションのどこかにあるはずです。ここに私のウェブページのための私のサーバーアプリです。多分Ajaxコールで?ここで

from flask import Flask, render_template 
from flask_cors import CORS 

app = Flask(__name__) 
CORS(app) 
@app.route('/demo') 
def webMap(): 
    return render_template('demo3.html') 

if __name__ == '__main__': 
    app.config['DEBUG'] = True 
    app.run(host='localhost', port=8090) 

はJSは次のとおりです。

var map = L.map('map1').setView([51.506725, -0.076486], 12); 

    L.tileLayer('https://api.tiles.mapbox.com/v4/{id}/{z}/{x}/{y}.png?access_token={accessToken}', { 
    attribution: 'Map data &copy; <a href="http://openstreetmap.org">OpenStreetMap</a> contributors, <a href="http://creativecommons.org/licenses/by-sa/2.0/">CC-BY-SA</a>, Imagery © <a href="http://mapbox.com">Mapbox</a>', 
    maxZoom: 18, 
    id: 'mapbox.streets', 
    accessToken: '*************************' 
}).addTo(map); 


//add start marker to map and delete old marker 
var startmarker = null; 

map.on('click', function (e) { 
    if (startmarker !== null) { 
     map.removeLayer(startmarker); 
    } 
    startmarker = L.marker(e.latlng, { 
     title: "Start Point", 
    }).addTo(map); 
    startcoords = e.latlng.lng.toString() + "&" + e.latlng.lat.toString(); 
    startmarker.bindPopup("Start " + startcoords); 
}); 


//add end marker to map and delete old marker 

var endmarker = null; 
map.on('contextmenu', function (e) { 
    if (endmarker !== null) { 
     map.removeLayer(endmarker); 
    } 
    endmarker = L.marker(e.latlng, { 
     title: "End Point", 
    }).addTo(map); 
    endcoords = e.latlng.lng.toString() + "&" + e.latlng.lat.toString(); 
    endmarker.bindPopup("End " + endcoords); 
    coords = startcoords+"&"+endcoords; 
}); 

// choose query type, click button & Ajax call to API server 

$("#button").click(function() { 
    var val = $('input[name=query]:checked').val() 
    if (val == 'route') { 
     stuff = $.ajax({ 
      url: "http://127.0.0.1:5000/route&"+coords, 
      type: "GET", 
      dataType: "json" ,  
     }) 
     .done(function(json) { 
      alert(JSON.stringify(stuff)); // trying to JSON back will work out how to display it after I get some data returned 
     }) 
     .fail(function(xhr, status, errorThrown) { 
      alert("Sorry, there was a problem!"); 
      console.log("Error: " + errorThrown); 
      console.log("Status: " + status); 
      console.dir(xhr); 
     }) 
     .always(function(xhr, status) { 
      alert("The request is complete!"); 
     }); 

答えて

1

「壊れたパイプは、あなたのフラスコプロセスはと話したいソケットやパイプのもう一方の端が死亡したことを示しているあなたと対話していることを考えると。 (Source

+0

ありがとうございましたNicolaさん、ありがとうございました。郵便配達員経由で送信された場合でも同じクエリが動作しますが、どちらかの問題はAjax呼び出し私は作成中です?上記で詳細を編集します – SAB