問題タブ [flask-restless]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
2149 参照

python - REST リソースの楽観的同時実行を処理する方法は?

バックエンドとして RESTful フレームワーク (Flask-Restless 0.17.0 with Flask-SQLAlchemy) を使用しています。そしてAngularJSをフロントエンドとして。

たとえば、単一のテーブルのバージョン列 (またはデータのタイムスタンプまたはチェックサム) を使用して同時実行性を処理できることはわかっています。

私が今それを処理する方法は次のようなものです:

すべての SQLAlchemy モデルは CommonColumns から継承しています:

各リクエストの後、いくつかのコードが etag-column を探し、そのヘッダーを作成します。

次に、API リソースごとに、この関数を呼び出すプリプロセッサを使用します。

「abort_on_etag_collision」関数も競合状態に対して脆弱だと思いますか?

しかし、次に、関連するテーブルが複数ある場合はどうでしょう。これらのテーブルには、親リソースを介してアクセスできますが、子リソースを介してアクセスすることもできます。これに対処するための最良または最も柔軟な方法が何であるかを理解するのに苦労しています.

SQLALchemy のバージョン管理機能を使用したい: http://docs.sqlalchemy.org/en/rel_1_0/orm/versioning.html

しかし、SQLAlchemy はこれを自動的に行わず、Flask-Restless を使用する可能性が見当たらないため、SQL を変更してバージョンの WHERE チェックを自分で含めることができるようにする必要があります。

どんな助けでも大歓迎です。

0 投票する
2 に答える
472 参照

flask - Flask-restless でセットアップされた API を照会する方法

Flaskアプリとmysqlデータベースの両方がpythonanywhereで提供されるデータを提供する方法を学ぼうとしています。

既存の mysql データベース テーブルに接続するように設計された関数を使用して /test へのルートを追加し、flask-restless の create_api を使用して API として提供します。

最後の Return "OK" を省略した場合、次のようなエラーが表示されます。

ただし、追加してもエラーは発生しません。

何故ですか?

そしてエンドポイントはどこですか?私は試していた

ページが見つかりませんというエラーが表示されます。

0 投票する
1 に答える
1186 参照

rest - フラスコレストレスでパッチを適用する方法は?

PATCHでリクエストを実行する正しい方法は何flask-restlessですか? 次の応答エラーが発生します。

これが私のクラスです:

ここに私の要求があります:

0 投票する
1 に答える
41 参照

python - Flask-restless==1.0.0b1 の POST リクエストで ERROR:400 MissingData が発生するのはなぜですか?

次のコードがあります。

リクエストの後、flask-debug コンソールに次のように表示されます。

次のPOSTプリプロセッサがあるため、データがデバッグ ウィンドウに出力されます。

0 投票する
1 に答える
921 参照

python - Flask Restless CSRF 免除認証 URL

アプリケーションの API 部分に Flask Restless 0.17 と Flask JWT を使用しています。アプリケーションのフロントエンドでは、Flask WTF とその CSRF 保護を使用しています。

これは、WTF がすべてのビューで CSRF トークンを想定しているため、Flask Restless で問題を引き起こしています。API の設計図を除外することで作成したエンドポイントでこれを回避できますが、Flask JWT で作成された /auth URL にこれを適用する方法がわかりません。

API の初期化:

0 投票する
0 に答える
1007 参照

memory - Apache の平均プロセス サイズを減らすにはどうすればよいですか?

Python ( Flask Restless ) で記述されたデータベースに対して API を実行しており、 Flask Documentationに従って apache2 と mod_wsgi を使用してサービスを提供しています。

アプリは、Auto-scaling グループ内の AWS EC2 インスタンスでホストされています。現在、以下を備えた m3.medium インスタンスでホストしています。

  • 1 vCPU
  • 3.75ギガバイトのRAM

私たちが抱えている定期的な問題は、メモリエラーです。Apache はインスタンスで使用可能なすべてのメモリを使い果たし、障害を引き起こします[critical memory allocation]。Apache に関するこの問題は十分に文書化されています。

docs およびその他の SO の質問では、apache プロセスの平均サイズを見つけて制限MaxRequestWorkers(別名MaxClients) することで過剰なメモリ使用を防ぐことができると説明されていますが、ほとんどのドキュメントでは利用可能なメモリよりも多くのワーカーを開始できないようになっています。最初にApacheが使用するRAMを減らす方法を示します。

次のコマンドを使用して、平均プロセス サイズを取得しています。

sudo ps -ylC apache2 | awk '{x += $8;y += 1} END {print "Apache Memory Usage (MB): "x/1024; print "Average Process Size (MB): "x/((y-1)*1024)}'

これは現在 ~130Mb ですが、これは不当に大きい数値ですか?

sudo free -m~3000Mb の空きメモリがあるため、メモリを使いすぎる前に 3000/130 = ~20 のワーカーを持つことができます。

過剰なメモリ使用を防ぐためにワーカーの数を制限することはできますが、これを行うと、1 分あたり最大 100 のリクエストがドロップされ、504 エラーが返されます。これは私のシナリオでは受け入れられません。

明らかに、サーバーの RAM の量を増やすか、各 Apache プロセスが消費するメモリの量を減らすという 2 つのオプションがあります。

Apache から不要なモジュールを既に削除しましたが、各 apache2 プロセスのメモリ フットプリントを削減するために他に何ができるかわかりません。13GB の RAM を必要とする 50 ~ 100 個のワーカーを実行したいのですが、これは過剰に思えますか?

WebApp は、約 30,000 のインターネット接続製品のシステムを管理するために使用されます。ほとんどの要求は、システムへの接続をログに記録するか、データの json 配列をユーザーに返すことです。

私の Apache2.conf ファイルは次のとおりです。

アプリに 13 GB 以上の RAM を搭載したサーバーが必要だとは思わず、MaxRequestWorkers の数を減らしたくない場合、システムが約 100 件の reqs/分

0 投票する
1 に答える
5060 参照

python - Flask-Restless & Marshmallow: 'dict' オブジェクトには属性 '_sa_instance_state' がありません

Flask-Restless、Flask-SQLAlchemy、および Marshmallow を使用して、基本的な CRUD JSON REST API に取り組んでいます。

このライブラリの組み合わせを使用すると問題が発生しますが、これは Marshmallow を使用して逆シリアル化を有効にした場合のみです。

私はエラーを広範囲にグーグルで検索しましたが、データベース関係を使用する場合にのみ同様の問題を見つけましたが、そうではありません。

同じエラーが発生しながら、アプリケーションからできるだけ多くのコードを削除しています。次のコード ブロックは、ローカルで実行されている 1 対 1 のものです。

models.py:

serializers.py:

main.py:

tests.py:

使用中のバージョン:

最後に、テスト実行時の完全なスタック トレース: