标签: zappa

django-zappa:加载 psycopg2 模块时出错:libpq.so.5:无法打开共享对象文件:没有这样的文件或目录

尝试使用 django-zappa 部署 Django 项目时,zappa tail输出中出现以下错误:

django.core.exceptions.ImproperlyConfigured: Error loading psycopg2 module: libpq.so.5: cannot open shared object file: No such file or directory
Run Code Online (Sandbox Code Playgroud)

我确保在需求文件中包含 psycopg2 模块:

psycopg2==2.8.3
Run Code Online (Sandbox Code Playgroud)

它安装在运行 zappa deploy 命令时处于活动状态的虚拟环境中。

我在 Linux 上运行并且在能够安装libpq-dev之前必须通过 apt安装,pip install psycopg2因为我之前收到一个错误,说系统上缺少 libpq(类似于上述错误,我猜)。

我怎样才能克服这个错误?

谢谢!

python django amazon-web-services zappa aws-lambda

6
推荐指数
1
解决办法
2836
查看次数

通过 Zappa 在 AWS Lambda 中部署的 Django 应用程序的请求时间太长

我最近使用Zappa将 Django 后端应用程序部署到 AWS Lambda 。

在一段时间内未调用 lambda 函数后,发出的第一个请求需要 10 到 15秒的时间才能处理。起初我以为这是因为冷启动,但这次即使是冷启动也是不可接受的。然后,通读 Zappa 的文档,我发现它默认启用keep_warm每 4 分钟向 lambda 函数发送一个虚拟请求以保持温暖的功能;因此,对 lambda 的第一个请求的响应的过度延迟并不是由于冷启动造成的。

然后,我开始使用 AWS X-Ray 和 Cloudwatch Insights 等工具来尝试找到延迟的解释。这是我发现的:

需要很长时间才能处理的调用如下: 在此输入图像描述

用红色划掉的是应用程序使用的环境变量的名称。它们都是直接在 AWS 控制台中定义并分配值的。我不明白的是,首先,为什么需要这么长时间,其次,为什么它说环境变量被转换为None. 该应用程序运行完美(除了第一个请求中的大量延迟之外),因此环境变量在某处正确设置。

此请求每隔两个小时虔诚地发出一次,并且在一段时间内有人第一次调用 lambda 函数,如下图所示:

在此输入图像描述

x 轴上的点对应于 Zappa 保持服务器温暖的虚拟请求。升高的点对应于上图中所示的调用。最后,峰值对应于用户调用。处理时间是处理长调用(第一张图中所示)所需时间和处理客户端向服务器发出的最长 http 请求所需时间的总和。该请求如下:

在此输入图像描述

这是一个常规的登录请求,应该更快地得到解决。其他可能比这个要求更高的请求在不到 100 毫秒的时间内得到了解决。

所以,总结一下:

  1. 有一个 lambda 调用需要 10 秒以上才能解析。这对应于显示的第一张图像。每 2 小时执行一次,当用户在服务器空闲一段时间后向服务器发出请求时执行一次。
  2. 有些请求需要 2 秒以上才能解决,我不知道为什么会这样。
  3. 除了这些先前的函数调用之外,所有其他请求都会在合理的时间范围内得到解决。

非常感谢任何关于为什么这些调用可能花费这么多时间的想法,因为我花了相当长的时间试图自己弄清楚,但我已经没有想法了。先感谢您!

编辑1(28/07/21):为了进一步支持我的怀疑,即这种延迟不是由于冷启动造成的,这里是Cloudwatch/应用程序监控/跟踪中函数的“分段时间线”:

在此输入图像描述

如果是冷启动,延迟应该出现在“初始化”段中,而不是“调用”段中。

编辑 2 (30/07/21):我忘了提及,我之前使用 Elastic Beanstalk 部署了应用程序,并且没有遇到此问题,因此我的代码的性能可能不是这里的问题。

编辑 3 (30/07/21):我在 2016 年的 AWS …

django amazon-web-services zappa aws-lambda

6
推荐指数
1
解决办法
1151
查看次数

如何在 AWS Lambda 上使用 Python 从 Zappa 获取堆栈跟踪

我在 AWS Lambda 上使用 Zappa 框架https://github.com/Miserlou/Zappa和 Python 和 Flask。当它引发异常时,它会出现在 CloudWatch 日志中,但我无法辨认。但是,我确实在调试版本中从 HTTP GET 返回了一个正常的 Flask 堆栈跟踪。

我的问题是如何在日志/生产代码中获得合理的(Flask)堆栈跟踪?当生产中出现异常时,我所拥有的只是日志消息。

来自 HTTP GET 的良好堆栈跟踪:

Traceback (most recent call last):
  File "/var/task/handler.py", line 96, in handler
    response = Response.from_app(app, environ)
  File "/private/var/folders/1j/5zcxjzkx29b8tfgrh2y90wt80000gn/T/pip-build-v6XvIH/Werkzeug/werkzeug/wrappers.py", line 865, in from_app
  File "/private/var/folders/1j/5zcxjzkx29b8tfgrh2y90wt80000gn/T/pip-build-v6XvIH/Werkzeug/werkzeug/wrappers.py", line 57, in _run_wsgi_app
  File "/private/var/folders/1j/5zcxjzkx29b8tfgrh2y90wt80000gn/T/pip-build-v6XvIH/Werkzeug/werkzeug/test.py", line 871, in run_wsgi_app
  File "/private/var/folders/1j/5zcxjzkx29b8tfgrh2y90wt80000gn/T/pip-build-v6XvIH/zappa/zappa/middleware.py", line 78, in __call__
  File "/private/var/folders/1j/5zcxjzkx29b8tfgrh2y90wt80000gn/T/pip-build-v6XvIH/flask/flask/app.py", line 1836, in __call__
  File "/private/var/folders/1j/5zcxjzkx29b8tfgrh2y90wt80000gn/T/pip-build-v6XvIH/flask/flask/app.py", line 1820, in wsgi_app
  File "/private/var/folders/1j/5zcxjzkx29b8tfgrh2y90wt80000gn/T/pip-build-jvEYWI/flask-restful/flask_restful/__init__.py", line 271, in error_router …
Run Code Online (Sandbox Code Playgroud)

python flask zappa aws-lambda

5
推荐指数
1
解决办法
2065
查看次数

无服务器AWS Lambda/Django/Zappa的异步任务队列

我一直在尝试使用Zappa将Django应用程序部署到AWS Lambda .

在我的一些其他(EC2/EBS托管的)Django项目中,如果需要执行一些可能需要一些时间的较重计算(例如发送大量电子邮件,或者只需要花费一分钟的一些处理),Celery用来.它是一个任务队列系统,任务被发送到队列,响应可以立即返回,工作人员可以稍后处理任务.

对于在Lambda中运行的Zappa-Django应用程序,实现类似Celery的任务排队系统的最佳方法是什么?

Zappa/Lambda支持计划任务,并且可以设计应用程序的模型,以便稍后可以通过计划的功能完成处理,并且可以将结果保存到DB.但我不认为每分钟一次轮询任务足够强大,通常需要立即启动延迟任务.

是否有一种简单的方法可以立即从Django视图返回响应并具有一个函数(来自Django应用程序内),其中任意参数排队等待稍后执行?

django amazon-web-services zappa aws-lambda

5
推荐指数
1
解决办法
2060
查看次数

Zappa不打包嵌套的源目录

我有一个要与zappa一起部署的python应用程序。我目录的根目录包含应用程序和名为helper的目录。结构如下:

|-app.py
|-zappa_settings.json
|-helper
   |-api.py
   |-__init.py__
Run Code Online (Sandbox Code Playgroud)

在helper目录中,有一个api.py文件,该文件在我的app.py中被引用,像这样

from helper import api
Run Code Online (Sandbox Code Playgroud)

当我运行用于打包和部署的命令时,zappa deploy dev它将不会捆绑部署中的帮助程序目录,而只会捆绑根应用程序目录。在打包和部署时,如何告诉zappa包括所有子目录?

python python-2.7 zappa

5
推荐指数
1
解决办法
449
查看次数

Zappa /异步AWS Lambda函数在30秒内超时

我有一个Python 3.6 -使用部署到AWS LAMBDA瓶应用扎帕,其中我有使用@task定义的异步任务执行功能所讨论这里

但是,我发现函数调用仍然在30秒后超时,而AWS Lambda对非API调用强制执行的5分钟超时。我什至在Lambda设置中检查了超时,并将其设置为5分钟。

我发现此问题的方式是lambda的调试输出开始无请求重复的情况-发生这种情况是因为错误或超时(根据AWS Lambda文档),又两次调用了lamba。

谁能帮助我解决这个问题?

[编辑:lambda函数也不是任何VPC的一部分,并且设置为可从Internet访问。]

这是下面的日志。基本上,倒计时是一个20秒的睡眠计时器,然后是@task调用application.reviv_assign_responder,但正如我们所见,“ NEAREST RESPONDER”没有溢出,并且倒计时再次开始,表明该功能已计时并被(AWS')设计再次调用。

Log output in Pastebin : https://pastebin.com/VEbdCALg

Second incident - https://pastebin.com/ScNhbMcn
Run Code Online (Sandbox Code Playgroud)

正如我们在第二个日志中看到的那样,它清楚地指出:

[1515842321866] wait_one_and_notify:30:26 [1515842322867] wait_one_and_notify:30:27 [1515842323865] wait_one_and_notify:30:28 [1515842324865] 2018-01-13T11:18:44.865Z 72a8d34a-f853-11e7-ac2f-out12bd3d后30.03秒

flask python-3.x zappa aws-lambda

5
推荐指数
2
解决办法
1524
查看次数

Zappa部署错误:GET请求产生502响应代码

我正在尝试部署使用Flask-Ask构建的第一个zappa示例应用程序,看起来一切正常,但是在Deploying API语句之后,出现以下错误:

错误:警告!部署的lambda的状态检查失败。对“ /”的GET请求产生了502响应代码。

这是我正在执行的代码,对示例应用程序进行了较小的更改

from flask import Flask
from flask_ask import Ask, question, statement, session
import pyodbc

app = Flask(name)
ask = Ask(app, '/')

@ask.intent('HelloIntent')
def hello(firstname):
speech_text = "Hello %s" % firstname
return statement(speech_text).simple_card('Hello', speech_text)

@ask.intent('ByeIntent')
def bye():
return statement("Ok, goodBye!")



if name == 'main':
app.run()
Run Code Online (Sandbox Code Playgroud)
  • 使用的Zappa版本:0.46.1
  • 操作系统和Python版本:Windows 7,Python 3.6

有人可以帮我吗?

python amazon-web-services zappa aws-lambda flask-ask

5
推荐指数
1
解决办法
3670
查看次数

如何使用 boto3 从外部调用在 zappa 中设置的 @app.route 函数?

我在 arn:aws:lambda:us-east-1:xxxxx:function:xx-xx-prod 部署了一个 zappa lambda,它提供如下路线:

@app.route('/test', methods=['POST'])
def test():
    response = app.response_class(
      response=get_jsonstr({'test': 'OK'}),
      status=200,
      mimetype='application/json'
    )
    return response
Run Code Online (Sandbox Code Playgroud)

我想从另一个 lambda 函数调用上面的 test() 函数,如下所示:

client = boto3.client('lambda', region_name='us-east-1')
r = client.invoke(
  FunctionName='arn:aws:lambda:us-east-1:xxxxx:function:xx-xx-prod',
  InvocationType='RequestResponse',
  LogType='None',
  Payload='',
)
print(r)
print(json.loads(r['Payload'].read()))
Run Code Online (Sandbox Code Playgroud)

上面的调用成功如下:

{
  'ResponseMetadata': {
    'RequestId': '37ecc17b-03a9-11e9-9ea0-9dee231dfb79',
    'HTTPStatusCode': 200,
    'HTTPHeaders': {
      'date': 'Wed, 19 Dec 2018 16:14:55 GMT',
      'content-type': 'application/json',
      'content-length': '4',
      'connection': 'keep-alive',
      'x-amzn-requestid': '37ecc17b-03a9-11e9-9ea0-9dee231dfb79',
      'x-amzn-remapped-content-length': '0',
      'x-amz-executed-version': '$LATEST',
      'x-amzn-trace-id': 'root=1-5c1a6e7d-8063e5004eab150d6c967b0;sampled=0'
    },
    'RetryAttempts': 0
  },
  'StatusCode': 200,
  'ExecutedVersion': '$LATEST',
  'Payload': <botocore.response.StreamingBody object …
Run Code Online (Sandbox Code Playgroud)

python amazon-web-services zappa aws-lambda

5
推荐指数
1
解决办法
433
查看次数

AttributeError:模块“__main__”没有属性“text_process”

语境

我正在 lambda 上部署我的机器学习模型;成功部署后,当我点击网关 URL 时,我收到 500 响应,并且日志为

Traceback (most recent call last):
  File "/tmp/serverless-ml/flask/app.py", line 2292, in wsgi_app
  response = self.full_dispatch_request()
  File "/tmp/serverless-ml/flask/app.py", line 1815, in full_dispatch_request
  rv = self.handle_user_exception(e)
  File "/tmp/serverless-ml/flask/app.py", line 1718, in handle_user_exception
  reraise(exc_type, exc_value, tb)
  File "/tmp/serverless-ml/flask/_compat.py", line 35, in reraise
  raise value
  File "/tmp/serverless-ml/flask/app.py", line 1813, in full_dispatch_request
  rv = self.dispatch_request()
  File "/tmp/serverless-ml/flask/app.py", line 1799, in dispatch_request
  return self.view_functions[rule.endpoint](**req.view_args)
  File "/tmp/serverless-ml/api/app.py", line 35, in index
  prediction = predict(data)
  File "/tmp/serverless-ml/api/app.py", line 54, in predict …
Run Code Online (Sandbox Code Playgroud)

python machine-learning zappa aws-lambda

5
推荐指数
0
解决办法
1038
查看次数

找不到库:libmysqlclient.so.18

我在使用 zappa 部署的 AWS lambda 上运行了 Flask API。

虽然实例化它无法找到 libmysqlclient.so.18 文件,我认为这会消耗大量时间。

附加图像中的错误消息

有人可以帮忙吗?

谢谢!

在此处输入图片说明

mysql zappa aws-lambda

5
推荐指数
1
解决办法
532
查看次数