python - 各エンティティの定期的なタスク

python google-app-engine

多くの場合、リモートリソースのローカルコピーであるモデルがあり、定期的に同期する必要があります。

Task(
    url="/keep_in_sync", 
    params={'entity_id':entity_id}, 
    name="sync-%s" % entity_id,
    countdown=3600
).add()


keep_in_sync内では、変更がモデルに保存され、新しいタスクが後で再び実行されるようにスケジュールされます。

さて、これは表面的には良い解決策のように思えますが、実際には、必要なすべてのタスクが実際に追加されているかどうかに関係なく心配になるかもしれません。ハムスターのケージ内にある餌のレベルを表すエンティティがあり、自動化された電子メールを家政婦に送って餌を与えることができます。しかし、数週間後、休暇から戻ったとき、ハムスターのいくつかが飢えているのに気づきます。

次に、各エンティティを通過するスクリプトを作成し、適切なタスクが実際にそのキューにあることを確認することは、良いアイデアのように見えます。ただし、TaskクラスもQueueクラスも、タスクが存在するかどうかを確認するメソッドはありません。

ハムスターを保存して、メソッドが本当に確実に各エンティティに対して定期的に呼び出されることを確認するより良い方法を考え出すことができますか?

更新

タスクがスケジュールされていることを本当に確認したい場合は、Nick Johnsonが提案するように、自分のタスクを追跡する必要があるようです。便利なタスクキューを手放す準備ができていないため、当面は、タスクが本当にスケジュールされているかどうかを確認できないという不確実性を許容します。
答え
エンティティごとにタスクをエンキューする代わりに、単一のタスクで複数のエンティティを処理します。これは、たとえば、複数のタスクにファンアウトする毎日のcronジョブによってトリガーできます。エンティティごとにコードを確実に実行するだけでなく、非同期URLFetchを利用して外部リソースとより効率的に同期し、データストアからputとgetをバッチ処理して更新をより効率的にすることもできます。
関連記事

python - AppEngine Pythonと 'IN'範囲のクエリを使用したデータモデリング

python - SqlAlchemy:動的クエリ

python - vplineとvlinesをmatplotlibのピクセル全体にスナップする

javascript - 良い例/テンプレート/ベストプラクティスAPIドキュメント

python - Django:より複雑な一意性制約?

python - Pythonでデータストアを適切にクエリする方法は? -基本的な問題

python - djangoを使用してFacebookのメールを取得する

python - Pythonがサブプロセスと通信する

python - ソラリス上のpython numpy、遅い、またはリンクされていませんか?

python - Google App EngineのSSLError(ローカル開発サーバー)