2017-06-05 17 views
0

私のインフラストラクチャにPub/Subイベントを公開する必要があります。だから、トピックのスキャンデッドロックを購読しているバックグラウンドのGoogle Cloud機能を書いた。データベースを読み込み、クラッシュしていないクローズされていないドキュメントのロックをすべて解放します。この関数は、例えば20分ごとに定期的に実行する必要があります。私が調査したように、Pub/SubイベントをApp EngineのCronサービスによって直接起動する方法はありません。私はそれを行うべきPythonスクリプトを書いたが(App Engineの例を使った)、残った最後の問題は実行時のライブラリが見つからない場合である。だから、私はこのエラーがあります。Google Cloud App Engine CronでPythonスクリプトを実行できません

enter image description here

そして、このファイル。

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ライブラリ宣言で別の例を見つけましたが、ライブラリがなくてもうまくいきませんでした。

答えて

1

libディレクトリにgoogleapiclientがありません。物事の

カップル: - $ pip install -t lib google-api-python-client

+0

、その後、プロジェクトディレクトリに新しいバージョン

2)$ cdしかし、私はちょうどにそれらをインストールする場合、すべてのライブラリが動作します

1)from googleapiclient import discovery <を試してみてくださいlibフォルダ? App Engineはライブラリの数はあまり多くありません。ライブラリに関する情報は少し断片化しています。 – QuestionAndAnswer

+0

App Engineはサンドボックスです。プロジェクトにANYライブラリーを入れることはできません。しかし、あなたは安全なもののほとんどを置くことができます。ライブラリがGAEに含まれておらず、サードパーティライブラリの1つとして提供されていない場合は、app.yamlに含めることができます。上記のようにプロジェクトに追加する必要があります。 – GAEfan

+0

ハッキングのような音です。 – QuestionAndAnswer

関連する問題