使用 Python 进行 zappa 调度

zappa scheduling with Python

我运行这个代码用Twilio发送短信...

client.messages.create(
        to=form.phone.data, 
        from_="+1xxxxxxxxxx",
        body="This is a text message"

我的应用程序使用 Python 的 Zappa 托管在 AWS Lambda 上。问题是我需要能够安排此消息在 10 分钟后发送。

Zappa 提供任务执行,但他们的文档不清楚应该如何完成这样的事情。

感谢您的帮助。

这不是 Zappa 目前直接支持的东西。您需要对可用的调度系统进行某种破解。

安排每分钟 运行 的活动:

{
    "production": {
       ...
       "events": [{
           "function": "your_module.send_msg", // The function to execute
           "expression": "rate(1 minute)" // When to execute it (in cron or rate format)
       }],
       ...
    }
}

你的代码可以这样写。

from datetime import datetime

def send_msg():
    form = get_form()
    elapsed = datetime.now() - form.date_created 
    if 10 < abs(elapsed.total_seconds())/60) < 11: # this is naive
        client.messages.create(...)

我为 zappa 制作了一个数据库驱动的任务队列。 https://github.com/andytwoods/zappa-call-later。早期,但我们正在生产中使用它。

每隔 X 分钟(如@Oluwafemi Sule 的回答中所建议的那样)一个 Zappa 事件会 ping 一个检查任务的函数。任务可以延迟 Y 分钟,重复 Z 次等。

我的方案很粗糙,时间分辨率低,目前水平很低