Python Pusher AWS Lambda

时间:2016-03-22 15:58:28

标签: python amazon-web-services lambda pusher

使用AWS Lambda将推送通知发送到Python中的Pusher应用程序。当我将Pusher及其所有依赖项安装到目录并压缩到Lambda时,我运行一个简单的测试并得到此错误。

No module named ndg.httpsclient.ssl_peer_verification

以下是我试图运行的代码。

from pusher import Pusher

pusher = Pusher(app_id=u'id', key=u'key', secret=u'secret')
def createPitchZip(context, event):
    pusher.trigger('testchannel', 'testevent', {u'some': u'data'})

我已经看过几篇关于此的帖子,但单独安装依赖项似乎并没有帮助。

谢谢!

修改

这是堆栈跟踪

No module named ndg.httpsclient.ssl_peer_verification: ImportError
Traceback (most recent call last):
  File "/var/task/lambda.py", line 5, in createPitchZip
    pusher = Pusher(app_id='***', key='***', secret='***')
  File "/var/task/pusher/pusher.py", line 42, in __init__
    from pusher.requests import RequestsBackend
  File "/var/task/pusher/requests.py", line 12, in <module>
    import urllib3.contrib.pyopenssl
  File "/var/task/urllib3/contrib/pyopenssl.py", line 49, in <module>
    from ndg.httpsclient.ssl_peer_verification import SUBJ_ALT_NAME_SUPPORT
ImportError: No module named ndg.httpsclient.ssl_peer_verification

3 个答案:

答案 0 :(得分:0)

我建议您使用virtualenv来跟踪依赖项。

以下是您可能需要制作的psedo步骤:

 1. virtualenv env
 2. env/bin/pip install <your packages>
 3. cd env/lib/python2.7/site-packages; zip -r mylambda.zip *
 4. also zip your lambda handler 

如果您正确安装了所有内容,则zip文件mylambda.zip将包含您需要的所有内容。

答案 1 :(得分:0)

这可能听起来很愚蠢,但不要命名你的本地变量pusher。 lambda函数中的变量绑定在执行期间发生,并且在您可能不期望的范围内发生。

我并不是建议这是完整的答案,而是执行import pusher并更改为myPusher = pusher.Pusher...以查看错误消息是否发生更改。如果它没有,则问题出在其他地方。

答案 2 :(得分:0)

将空__init__.py文件添加到ndg目录可修复此问题。