AWS Lambda未导入Asynci

2024-03-29 12:10:06 发布

您现在位置:Python中文网/ 问答频道 /正文

所以我正在制作一个应用程序来调用redditapi,而Lambda似乎不喜欢我导入asyncio的方式。我使用“pip install asyncio-t”在包文件夹中安装了asyncio,然后用我的项目文件压缩了该文件夹。我正在项目文件中导入asyncio(import asyncio)。但是,每次我尝试在Alexa开发人员控制台中测试我的Alexa应用程序时,除非我去掉import语句,否则应用程序不会运行。你知道吗

以下是我尝试测试时得到的信息:

{ "errorMessage": "Syntax error in module 'reddit_alexa_py': invalid syntax (base_events.py, line 296)", "errorType": "Runtime.UserCodeSyntaxError", "stackTrace": [ " File \"/var/task/asyncio/base_events.py\" Line 296\n future = tasks.async(future, loop=self)\n" ] }

下面是日志输出:

START RequestId: ee952162-1d06-4c04-9a0d-cfd4f0fce80f Version: $LATEST [ERROR] Runtime.UserCodeSyntaxError: Syntax error in module 'reddit_alexa_py': invalid syntax (base_events.py, line 296) Traceback (most recent call last):   File "/var/task/asyncio/base_events.py" Line 296             future = tasks.async(future, loop=self)END RequestId: ee952162-1d06-4c04-9a0d-cfd4f0fce80f REPORT RequestId: ee952162-1d06-4c04-9a0d-cfd4f0fce80f Duration: 19.71 ms Billed Duration: 100 ms Memory Size: 128 MB Max Memory Used: 57 MB

这也发生在我尝试导入的其他东西上。我想我需要进口这些软件包,以完成这个项目,所以任何帮助将不胜感激。谢谢!你知道吗

编辑:这里有一个到Python文件https://drive.google.com/file/d/1_rbNLlwRBmt_6J0YMMa4idPSfmOKZb_j/view?usp=sharing的链接


Tags: 文件项目pyimport文件夹asyncio应用程序base
2条回答

我用了类似的方法。在压缩所有内容之前,我必须将导入的模块复制到工作目录的子目录中。在将zip文件加载到Lambda函数中之后,我可以通过查看Lambda控制台中的函数来验证要导入的代码是否已加载。你知道吗

enter image description here

对我来说,关键是,在我的本地计算机上,我必须找到psycopg2目录,并将整个目录复制到我正在编写postgresql的工作目录中_测试.py在压缩我的工作目录之前。你知道吗

我不确定asyncio,但是对于一般的python包,您需要确保您的包是为amazonlinux1(用于python3.7运行时)和amazonlinux2(用于python3.8运行时)构建的。在后台,Lambda使用运行amazonlinux的容器,您需要确保上载的包与该操作系统兼容。纯python包是可以的,但是任何带有编译内容的东西都需要是特定于操作系统的。你知道吗

此外,您还需要确保将整个包与代码打包在一起。你知道吗

更简单的方法是使用无服务器框架及其无服务器python需求插件。这将有助于自动化这一点,所以你不必手动修补这些东西的所有时间。你知道吗

还要签出https://github.com/keithrozario/Klayers,它有一大堆python包可以快速使用不幸的是没有asyncio。你知道吗

相关问题 更多 >