一般为圣杯功能设置超时
set timeout for chalice functions in general
在 chalice 的文档中,您可以看到 lambda 函数在由 chalice 提供的 aws 上的配置示例。
我们的想法是您可以像下面这样定义一个应用程序:
from chalice import Chalice
app = Chalice(app_name='demotimeout')
@app.route('/')
def index():
return {'hello': 'world'}
@app.lambda_function()
def test_lambda(event, context):
return {'hello': 'world'}
使用此应用程序,您可以像这样设置 config.json
文件;
{
"stages": {
"dev": {
"api_gateway_stage": "api",
"lambda_functions": {
"test_lambda": {
"lambda_timeout": 120
}
}
}
},
"version": "2.0",
"app_name": "demotimeout"
}
执行此操作时,您设置了 test_lambda
函数的超时。
我想知道,index
函数是否可以设置超时?一个没有 @app.lambda_function()
装饰器,一个有 @app.route('/')
装饰器?
如果到达Chalice 路线时不满足要求,则要么失败要么通过。 Chalice路由中没有超时设置。
但是在配置中设置的 lambda 的 Chalice 超时设置。
这是为 aws lambda 配置超时并部署它的一种方法:
$> chalice --version
chalice 1.2.2
首先创建一个"pure lambda",参考这个link了解详情:
http://chalice.readthedocs.io/en/latest/topics/purelambda.html
@app.lambda_function(name='FancyLambdaFunc')
def fancy_handler(event, context):
# Do all the fancy stuff ...
config.json 中的第 2 添加:
"dev": {
"api_gateway_stage": "api",
"lambda_functions": {
"FancyLambdaFunc": {
"lambda_timeout": 240
}
}
}
终于在AWS中验证了:(见上图)
更改 config.json 文件如下:
{
"stages": {
"dev": {
"api_gateway_stage": "api"
}
},
"version": "2.0",
"app_name": "myappname",
"lambda_memory_size" : 2048,
"lambda_timeout" : 120
}
无需使用 lambda 装饰器或任何东西。
当您想在 non-pure lambda 上设置超时(之前未在应用程序上下文中声明)时,AWS 中的 lambda 名称带有前缀。但是,在配置文件中你不应该设置这个前缀。
此配置的 lambda 函数的正确名称在您声明的资源文件中,在 .chalice/deployed/prod.json
的圣杯中
使用来自此文件的相应 lambda 函数的 name
,而不是来自 AWS 控制台。
在 chalice 的文档中,您可以看到 lambda 函数在由 chalice 提供的 aws 上的配置示例。
我们的想法是您可以像下面这样定义一个应用程序:
from chalice import Chalice
app = Chalice(app_name='demotimeout')
@app.route('/')
def index():
return {'hello': 'world'}
@app.lambda_function()
def test_lambda(event, context):
return {'hello': 'world'}
使用此应用程序,您可以像这样设置 config.json
文件;
{
"stages": {
"dev": {
"api_gateway_stage": "api",
"lambda_functions": {
"test_lambda": {
"lambda_timeout": 120
}
}
}
},
"version": "2.0",
"app_name": "demotimeout"
}
执行此操作时,您设置了 test_lambda
函数的超时。
我想知道,index
函数是否可以设置超时?一个没有 @app.lambda_function()
装饰器,一个有 @app.route('/')
装饰器?
如果到达Chalice 路线时不满足要求,则要么失败要么通过。 Chalice路由中没有超时设置。
但是在配置中设置的 lambda 的 Chalice 超时设置。
这是为 aws lambda 配置超时并部署它的一种方法:
$> chalice --version
chalice 1.2.2
首先创建一个"pure lambda",参考这个link了解详情: http://chalice.readthedocs.io/en/latest/topics/purelambda.html
@app.lambda_function(name='FancyLambdaFunc')
def fancy_handler(event, context):
# Do all the fancy stuff ...
config.json 中的第 2 添加:
"dev": {
"api_gateway_stage": "api",
"lambda_functions": {
"FancyLambdaFunc": {
"lambda_timeout": 240
}
}
}
终于在AWS中验证了:(见上图)
更改 config.json 文件如下:
{
"stages": {
"dev": {
"api_gateway_stage": "api"
}
},
"version": "2.0",
"app_name": "myappname",
"lambda_memory_size" : 2048,
"lambda_timeout" : 120
}
无需使用 lambda 装饰器或任何东西。
当您想在 non-pure lambda 上设置超时(之前未在应用程序上下文中声明)时,AWS 中的 lambda 名称带有前缀。但是,在配置文件中你不应该设置这个前缀。
此配置的 lambda 函数的正确名称在您声明的资源文件中,在 .chalice/deployed/prod.json
使用来自此文件的相应 lambda 函数的 name
,而不是来自 AWS 控制台。