在了解了 Openwhisk 的简单 触发器 之后,这变得非常简单; 动作; 规则模型。
所以我将我的 Python 应用程序完全迁移到 Openwhisk,而不是使用 Bluemix Python buildpack 或 Bluemix Docker 容器,这两种容器都不适合这项任务的简单需求。
我在下面提供了一个摘要。我写了一个更详细的版本here。
作为额外的奖励,我能够删除大量自己的代码,而是使用Slack 进行通知。由于它很简单,因此我将其包含在此答案中。
程序
Openwhisk Python 操作是 python 2.7。
档案sitemonitor.py:
def main(inDict):
inTimeout = inDict.get('timeout', '4')
// A few function calls omitted for brevity
if state.errorCount == 0:
return {'text': "All sites OK"}
else:
return { 'text' : state.slackMessage }
main 接受字典并返回字典
设置作业
创建sitemonitor 操作
timeout 是仅适用于我的应用的参数。
$ wsk action create sitemonitor sitemonitor.py # default timeout of 4 seconds
或在默认参数中为操作设置不同的超时时间
$ wsk action update sitemonitor sitemonitor.py --param timeout 2 # seconds
创建 Slack 包操作monitorSlack
wsk package bind /whisk.system/slack monitorSlack \
--param url 'https://hooks.slack.com/services/...' \
--param username 'monitor-bot' \
--param channel '#general'
找到Incoming Webhook URL from your Slack Team account
创建组合的monitor2slack 动作
$ wsk action create monitor2slack --sequence sitemonitor,monitorSlack/post
创建触发器
每隔一小时自动触发一次
$ wsk trigger create monitor2hrs \
--feed /whisk.system/alarms/alarm \
--param cron '0 0 */2 * * *'
$ wsk trigger fire monitor2hrs # fire manually to test
创建规则
$ wsk rule create monitorsites monitor2hrs monitor2slack
... Openwhisk 将完成剩下的工作。
参考文献
Openwhisk documentation:很好
Slack dW OpenTeam 中 #openwhisk 频道的人们非常乐于助人。