6

私のアプリケーションでは、MongoDB コレクションをサーバー側のスクリプト ジョブ (IE: 30 分ごとに他の API からスクレイピング/プルする cron ジョブ) で更新する必要があります。私が本当にやりたいことは、MongoDB コレクションを更新することですが、スキーマに対してデータを検証し、メタデータ (更新、作成など) を含めます。

これを解決するために頭に浮かぶ2つの方法は次のとおりです。

  1. HTTP POST/PUT/PATCHES を実行する偽のクライアントを用意します。ただし、これは、この偽のクライアントが認証/承認/最終変更日などを処理する必要があることを意味します。
  2. PyMongo を使用して、DB と直接やり取りします。ただし、これは、データ検証やメタデータが保存されないことを意味します。

Eve にはデータベース用のフックがあり、HTTP を使用せずに Eve リッチなデータベース更新を行うことができますか?

4

3 に答える 3

4

ジェンキンスで定期的に実行できる別のスクリプトでこれを実行できました。インポートしている run.py のアプリは、前夜のクイックスタートの終わりまでに持っていたものです。

from run import app
from eve.methods.post import post_internal

payload = {
    "firstname": "Ray",
    "lastname": "LaMontagne",
    "role": ["contributor"]
}

with app.test_request_context():
    x = post_internal('people', payload)
    print(x)

post_internal は、flask.request に依存する eve.utils.parse_request を実行するため、with app.test_request_context()必須です。app.app_context()この方法では不十分です。

(私のように) フラスコを初めて使用する場合は、 appcontextreqcontextのドキュメントをお読みください。

于 2014-08-25T19:39:25.187 に答える