私のインフラストラクチャにPub/Subイベントを公開する必要があります。だから、トピックのスキャンデッドロックを購読しているバックグラウンドのGoogle Cloud機能を書いた。データベースを読み込み、クラッシュしていないクローズされていないドキュメントのロックをすべて解放します。この関数は、例えば20分ごとに定期的に実行する必要があります。私が調査したように、Pub/SubイベントをApp EngineのCronサービスによって直接起動する方法はありません。私はそれを行うべきPythonスクリプトを書いたが(App Engineの例を使った)、残った最後の問題は実行時のライブラリが見つからない場合である。だから、私はこのエラーがあります。Google Cloud App Engine CronでPythonスクリプトを実行できません
そして、このファイル。
app.yamlを
runtime: python27
threadsafe: no
handlers:
- url: /trigger-scan-dead-locks
script: trigger-scan-dead-locks.py
login: admin
appengine_config.py
from google.appengine.ext import vendor
vendor.add('lib')
cron.yaml
cron:
- description: scan for dead locks and release locks
url: /trigger-scan-dead-locks
schedule: every 20 mins
trigger-scan-dead-locks.py
from apiclient import discovery
pubsub = discovery.build('pubsub', 'v1')
pubsub.projects().topics().publish(topic="scan-dead-locks").execute()
例はこちらhttps://github.com/GoogleCloudPlatform/reliable-task-scheduling-compute-engine-sampleから取られました。 問題を解決するかもしれない一般的な質問、ここでライブラリをどのように管理しているか(私はすでにドキュメントを読んでいますが、それは本当に役に立たなかったのですか?また、from google.cloud import pubsub
ライブラリ宣言で別の例を見つけましたが、ライブラリがなくてもうまくいきませんでした。
、その後、プロジェクトディレクトリに新しいバージョン
2)
$ cd
しかし、私はちょうどにそれらをインストールする場合、すべてのライブラリが動作します1)
from googleapiclient import discovery
<を試してみてくださいlibフォルダ? App Engineはライブラリの数はあまり多くありません。ライブラリに関する情報は少し断片化しています。 – QuestionAndAnswerApp Engineはサンドボックスです。プロジェクトにANYライブラリーを入れることはできません。しかし、あなたは安全なもののほとんどを置くことができます。ライブラリがGAEに含まれておらず、サードパーティライブラリの1つとして提供されていない場合は、app.yamlに含めることができます。上記のようにプロジェクトに追加する必要があります。 – GAEfan
ハッキングのような音です。 – QuestionAndAnswer