在了解了Openwhisk的简单触发器之后,这变得非常简单;行动;规则模型。
因此,我将我的 Python 应用程序完全迁移到 Openwhisk,而不是使用 Bluemix Python buildpack 或 Bluemix Docker 容器,这两种容器都不适合这项任务的简单需求。
我在下面包含一个摘要。我在这里写了一个更详细的版本。
作为额外的奖励,我能够删除大量我自己的代码,而是使用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'
从您的 Slack 团队帐户中查找传入的 Webhook URL
创建组合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 文档:非常好
Slack团队的#openwhisk
频道人员非常乐于助人。dW Open