Python 推送器 AWS Lambda
Python Pusher AWS Lambda
使用 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
我建议您使用 virtualenv
来跟踪依赖关系。
以下是您可能需要执行的伪步骤:
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
将包含您需要的所有内容。
这听起来可能很傻,但不要命名您的局部变量推送器。 lambda 函数中变量的绑定发生较晚,在其执行期间,并且发生在您可能意想不到的范围内。
我并不是说这是完整的答案,而是执行 import pusher
并更改为 myPusher = pusher.Pusher...
以查看错误消息是否发生变化。如果不是,则问题出在其他地方。
将空 __init__.py
文件添加到 ndg
目录解决了这个问题。
使用 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
我建议您使用 virtualenv
来跟踪依赖关系。
以下是您可能需要执行的伪步骤:
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
将包含您需要的所有内容。
这听起来可能很傻,但不要命名您的局部变量推送器。 lambda 函数中变量的绑定发生较晚,在其执行期间,并且发生在您可能意想不到的范围内。
我并不是说这是完整的答案,而是执行 import pusher
并更改为 myPusher = pusher.Pusher...
以查看错误消息是否发生变化。如果不是,则问题出在其他地方。
将空 __init__.py
文件添加到 ndg
目录解决了这个问题。