无法为 AWS Lambda 导入 grequests

Unable to import grequests for AWS Lambda

我是 运行 具有 Python 2.7 运行时的 AWS Lambda 脚本。然而,每当它初始化时,它开始导入 grequests 库但由于它对 gevent 的依赖而失败:

Gevent is required for grequests.

它似乎成功地找到了 grequests 库(因为它知道它需要 gevent)但是失败了。

到目前为止我尝试过的:

pip install --ignore-installed grequests -t .

pip install --ignore-installed grequests -t ./lib

pip install --ignore-installed gevent -t .

pip install --ignore-installed gevent -t ./lib

然后我压缩目录的内容并按照此处的说明上传到 AWS:http://docs.aws.amazon.com/lambda/latest/dg/lambda-python-how-to-create-deployment-package.html

似乎无论我尝试什么,Lambda 都无法找到 gevent,但它能够毫无问题地找到其他非默认库。

由于 Gevent 基于 libev,因此在通过 pip 安装时很可能会编译二进制文件。

如果您希望它们在 AWS Lambda 中可执行,则需要确保您正在部署为 Amazon Linux 编译的二进制文件。您可以通过在 运行 Amazon Linux 的 EC2 实例上构建部署包来实现此目的。

另请查看 and this tutorial

我必须在 Amazon Linux 实例上从 src 构建 gevent。如果有人需要,我将生成的文件放在 zip 中——只需将它们包含在您上传的 Lambda zip 中,您应该像老板一样并发。

https://github.com/brandonmp/aws-lambda-grequests