Google Cloud App Engine Cron无法执行python脚本

时间:2017-06-05 08:00:47

标签: python google-app-engine cron google-cloud-platform

我需要在我的基础架构中发布Pub / Sub事件。所以,我写了主题scan-dead-locks订阅的背景Google Cloud Function。它将读取数据库并释放文档上所有崩溃的未关闭的锁。例如,该功能应每20分钟定期执行一次。据我调查,没有办法直接通过App Engine的Cron服务触发Pub / Sub事件。我写了一个应该这样做的python脚本(使用了App Engine的例子),但是,最后一个问题是运行时没有找到的库。所以,我有这个错误。

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 个答案:

答案 0 :(得分:1)

听起来你的lib目录中没有googleapiclient。

一些事情:

1)尝试from googleapiclient import discovery< - 较新版本

2)$ cd到您的项目目录,然后$ pip install -t lib google-api-python-client