如何在AWS Lambda上使用Grequests?
我有一个Python
功能Lambda
使用几个库与二进制依赖:numpy
,scipy
,Pillow
等。在过去,我已经成功地将它们编上Amazon Linux
&部署到Lambda
。如何在AWS Lambda上使用Grequests?
我最近增加了Grequest
到一堆的依赖关系,但它抛出的错误似乎与Grequest
没有直接关系。关于这个话题的Other questions导致了死胡同,所以把我的帽子放在戒指中。
第一个错误是一个简单的Grequests requires gevent
或类似的东西。为了解决这个问题,我尝试在Amazon Linux
实例上运行pip install gevent --no-binary :all:
,将其与我的代码绑定并上传到Lambda。这对错误没有影响。
我再从gevent
回购下载的src
和使用make
(命令在回购的README丢给我没有记录错误)编译它。这产生了一个egg
文件,我将其转换为whl
文件& ran pip install gevent.whl -t .
。
我将结果代码与我的lambda.zip
捆绑在一起并上传。这导致了一个新的错误: module initialization error: lib/libptf77blas.a.gz: invalid ELF header
libptf77blas.a.gz
是在lib
文件夹中我lambda.zip
文件。此文件夹包含几个.so
和.a
文件,这是我建立在AWS的Linux,而组装numpy
,scipy
,Pillow
等
据我所知,这是numpy
的依赖。我不明白的部分是:我的功能使用numpy
(大概libptf77blas.a.gz
就好之前加入grequests
到
所以我想讲讲编译gevent
打破了依赖于我的其他binary
- 依赖性库,或gevent
本身需要。 libptf77blas.a.gz
,并在它发现被混淆。
我跑了.so
文件gevent
取决于ldd
,但没有提及libptf77blas.a.gz
,但是,我是一个编译福利局,所以这是难以定论。
我想实现并行上传Grequests
启用,但我不清楚如何解决这个问题,或者不知道如何使用其他库(我通常编写JS,所以Python是第二语言)。
这个问题完全是一个愚蠢的用户错误从一个不相关的问题 - 按照OP中的步骤,你应该没问题。
或者只是使用副本grequests
I posted on github。这是一个zip
,其中grequests
,gevent
和greenlet
在Amazon Linux实例上编译。它在我的Lambda Function
工作得很好。
感谢很多人!!!!!!!!!!! thanx很多的努力:) – vks
即使是你自己的,你应该接受这个答案,因为它是正确的。 – vks
我知道我正在回复一个过去的帖子/回答,但如果您碰巧拥有与Python 3.6相同类型的zip文件,我会非常感激:D – kilokahn