18

フラスコ/python RESTful APIにアクセスする角度でフロントエンドを構築しています。AngularJS v1.2.16 を使用しています。

なんらかの理由で、REST リソースがロードされるまでに非常に長い時間がかかり、ほとんどの時間はただ待っているだけです。「待機」は最初のバイトまでの時間を測定していることを理解しています-すべてのサービスはローカルで実行されます(フロントエンド、API、およびデータベース)。

Angular、API、および Mongo DB はすべてローカルで実行されています。

サービスがすべてローカルで実行されていることを考えると、これをデバッグする方法がわかりません。どこを見るべきかについてのヒントはありますか?すべてのメソッドをチェックしたところ、かなり高速に実行されました (REST 呼び出しごとに 100 ミリ秒未満)。postmanを使用すると、API はほぼ瞬時に戻ります。

待機を修正する方法はありますが、RESTful リソースを angular 経由でロードする場合にのみ発生するようです。angular $http get リクエストはかなり単純です。

myAppControllers.controller('ManageCtrl', ['$scope', '$http',
    function($scope, $http) {
        $http({
            url: 'http://127.0.0.1:5000/v1/domains/',
            method: "GET",
            headers: { 'Content-Type': 'application/json' },
        }).
        success(function(data, status, headers, config) {
            console.log('login successful');
            console.log(status);
            console.log(data);
        }).
        error(function(data, status, headers, config) {
            console.log('login failed');
        });
    }]);

編集:

  • この問題は、通常モードの Google Chrome でのみ発生します。
  • シークレット モードを使用すると、GET リクエストが高速になります。
4

4 に答える 4

23

同じ問題があり、いくつかの調査の結果、問題はChromeが接続を使用する方法と、フラスコのデフォルト構成がモノスレッドとして関連している.

フラスコアプリの起動時に threaded=true を追加して問題を解決しました:

app.run(threaded=True)
于 2015-06-05T15:42:50.567 に答える
0

私は今、非常によく似た問題に直面しています。私の現在の解決策(現時点ではシェフに受け入れられます:))、残念ながらすべての問題を解決するわけではありませんが、 header:{ 'Content-Type': 'application/json' }をに設定すること{ 'Content-Type': 'text/plain' }です。現在、最初のGETリクエストのみが非常に遅く、次のリクエストは 500 ミリ秒未満で済みます。Restangularフロントエンドとバックエンドで使用しwsgiref.simple_serverています。

于 2015-10-07T17:34:23.117 に答える
0

これも絡めたかった。しかし

app.run(threaded=True) 

私のために働いた!

于 2017-10-01T20:22:42.390 に答える