flask - 无服务器 - 如何在 AWS Lambda 函数中定期运行 Flask 命令?
问题描述
我正在使用以下 serverless.yml 文件来运行烧瓶应用程序。我的烧瓶应用程序有一个 cli 命令,我想定期调用它。
所以 yml 文件应该做两个任务,作为一个普通的 wsgi 应用程序执行 api 调用,并定期调用一个命令行函数。
我应该在 yml 文件中对其进行哪些更改?
functions:
app:
handler: wsgi.handler
events:
- http: ANY /
- http: 'ANY {proxy+}'
无服务器.yml
app = Flask(__name__)
user_cli = AppGroup('user')
@user_cli.command('create')
def create_user():
pass
app.cli.add_command(user_cli)
需要运行的命令:“flask user create”
解决方案
因为您可能同时运行多个 lambda 函数实例。您是否想在所有实例上运行此命令,很可能您希望它运行一次命令,而不管在给定时间运行的 lambda 函数的数量。
由于您使用的是无服务器,因此支持编写类似 cronjob 的函数。以下是您需要遵循的步骤:
添加您希望函数
create_user
运行频率的计划。functions: cronCreateUser: handler: app.create_user events: # At 00:00 on Sunday - schedule: cron(0 0 * * SUN)
或者
functions: cronCreateUser: handler: app.create_user events: # Every 1 hour - schedule: rate(1 hour)
笔记:
- 您不需要考虑 cli 命令,只需调用该函数即可(例如
create_user
)。 - 我假设该函数位于项目的根目录(也称为顶级目录)中的
create_user
一个名为的文件中。app.py
我建议您阅读以下内容:
- 无服务器文档和示例。
- crontab 示例
- AWS Cloudwatch 事件规则(幕后真正发生的事情)。
推荐阅读
- c# - Unity Networking 2d 游戏,ClientRpc 无法正常工作
- java - 特定 Xml 标签的 Netty 解码器
- javascript - 排除嵌套在jquery中另一个div下的div
- service-worker - 在单页应用程序中检查服务人员更新
- javascript - 使用授权标头使用 API
- husky - 这是使用 husky + lint-staged 的正确方法吗?
- boost - 将 Spirit x3 解析为具有单个字段的结构
- html - 具有相同 CSS 属性的两个表格呈现不同的列宽
- django - Django REST Framework - 社交身份验证(Facebook、Twitter 等)
- python - Python OneHotEncoder 使用许多虚拟变量还是更好的做法?