我需要在我的基础架构中发布Pub / Sub事件。所以,我写了主题scan-dead-locks订阅的背景Google Cloud Function。它将读取数据库并释放文档上所有崩溃的未关闭的锁。例如,该功能应每20分钟定期执行一次。据我调查,没有办法直接通过App Engine的Cron服务触发Pub / Sub事件。我写了一个应该这样做的python脚本(使用了App Engine的例子),但是,最后一个问题是运行时没有找到的库。所以,我有这个错误。
这个文件。
的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
库声明的另一个例子,但由于缺少库,它没有用。
答案 0 :(得分:1)
听起来你的lib
目录中没有googleapiclient。
一些事情:
1)尝试from googleapiclient import discovery
< - 较新版本
2)$ cd
到您的项目目录,然后$ pip install -t lib google-api-python-client