Aws lambda aws lambda上的wsgi应用程序中的非活动时间是如何计算的?
主要问题是:在aws Lambda上部署的wsgi应用程序中如何计算时间 假设我部署以下简单的Flask应用程序:Aws lambda aws lambda上的wsgi应用程序中的非活动时间是如何计算的?,aws-lambda,sleep,wsgi,Aws Lambda,Sleep,Wsgi,主要问题是:在aws Lambda上部署的wsgi应用程序中如何计算时间 假设我部署以下简单的Flask应用程序: 从烧瓶导入烧瓶 app=烧瓶(名称) @附件路线(“/”) def hello(): 返回“你好,世界!”,200 在AWS Lambda上使用Zappa,配置如下: { "dev": { "app_function": "simple_application.app", "profile_name": "default",
从烧瓶导入烧瓶
app=烧瓶(名称)
@附件路线(“/”)
def hello():
返回“你好,世界!”,200
在AWS Lambda上使用Zappa,配置如下:
{
"dev": {
"app_function": "simple_application.app",
"profile_name": "default",
"project_name": "simple_application",
"runtime": "python3.7",
"s3_bucket": "zappa-deployments-RANDOM",
"memory_size": 128,
"keep_warm": false,
"aws_region": "us-east-1"
}
}
现在,如果AWS对我的网站有请求,它将启动一个包含我的代码的容器,让它处理请求。假设请求在200毫秒内送达
显然,内置wsgi服务器的Lambda会继续运行(默认情况下,Zappa会使Lambda运行至少30秒)
现在,我们来看一下各个子问题:
- 200毫秒,因为请求持续时间
- 30秒,因为我的lambda执行时间低于限制
- 直到lambda被AWS杀死以回收空间(甚至可能在30-45分钟后发生)
从烧瓶导入烧瓶
从线程导入计时器
从数据库导入访问
导入系统
lambda_uuid=“SOME-uuid-OF-lambda-INSTANCE”
#收集访问次数
访问次数=0
def报告_访问():
访问次数(uuid=lambda_uuid,访问次数=visions).save()
系统出口(0)
t=计时器(14*60+30,报告访问)
t、 开始()
#烧瓶路线的开始
app=烧瓶(名称)
@附件路线(“/”)
def hello():
访问量=访问量+1
返回“你好,世界!”,200
提前感谢您提供的任何信息
默认情况下,Zappa使lambda运行至少30秒
我找不到支持这一点的文档,而且我能找到的所有Zappa文档都指出,一个Zappa函数将在返回响应后立即结束(就像任何其他AWS Lambda函数一样),因此,您只需为生成响应所花费的毫秒付费
我确实看到Zappa Lambda函数的默认最大执行时间是30秒。也许这就是你困惑的地方?该设置只是告诉AWS Lambda,如果正在运行的函数实例运行了那么长的时间,就将其杀死
通过阅读AWS Lambda定价页面,我本以为只需200毫秒就可以收费,但我敢打赌30秒就可以收费,因为毕竟是我强加了这样的限制
您将按函数运行的确切时间收费。因此,如果它运行200毫秒,那么您将收取200毫秒的费用
如果我只收取200毫秒(以及后续请求时间)的费用,但容器持续不间断运行30-45分钟,我还有第三个子问题: