繁体   English   中英

在GAE for Python上使用boto3

[英]use boto3 on GAE for Python

我正在尝试将boto3用于Google App Engine for Python中的Polly API。 到目前为止,我已经在我的lib子目录中安装了boto3

pip install -t lib boto3

当我运行独立脚本时,它运行良好,但是当我在DEV服务器上的应用程序中执行boto3.client(...)时,我收到来自botocore / session.py的错误消息:

from _winreg import OpenKeyEx, QueryValueEx, CloseKey, HKEY_LOCAL_MACHINE
ImportError: No module named _winreg

我已经看到,由于GAE已沙盒化,因此_winreg模块不可用是正常的

有没有人有在GAE上安装boto3并在DEV和PROD服务器上运行的经验?

还是有另一种使用Polly API的方法?

正如@ simon-pierre回答的那样,可以通过编辑config_appengine.py并添加来解决_winreg错误:

import sys
sys.plateform='linux3'

但是后来我遇到了另一个问题

Python NameError:未定义全局名称“ ssl”。 要解决这个问题,您必须编辑app.yaml并通过以下命令启用ssl:

libraries:
- name: ssl
  version: 2.7.11

然后出现另一个Windows上特定于GAE的问题:从_ssl导入RAND_egd导致ImportError:无法导入名称RAND_egd。 在sochet.py中

如下所述修改socket.py即可解决此问题: https : //code.google.com/p/googleappengine/issues/detail? id=12783

然后是一个最终的问题,我目前还没有找到解决方法:

在DEV服务器上,AWS回答:从DEV GAE调用时,我的呼叫client.describe_voices('en-US')出现ConnectionError:('Connection aborted。',error(13,'权限被拒绝'))到我,但在同一脚本中却没有称为独立。

我已经找到了与PayPal SDK有关的此类问题以及针对PayPal的解决方案的参考,但是没有人有针对AWS boto3的解决方案

https://github.com/paypal/PayPal-Python-SDK/issues/66

任何想法?

解决方法:在您的appengine_config.py文件中,更改sys.platform值:

import sys
sys.platform = 'linux3'

问题在于App Engine开发环境已沙盒化,并阻止了_winreg模块的使用。 (来源: https : //stackoverflow.com/a/28653565/902751

根据App Engine Google小组的这一评论

使用Python版本> = 2.7.4时,由于App Engine SDK> = 1.9.34,因此在Windows的dev_appserver sanbox环境中未将sys.platform显式设置为'linux3'。 [...]不幸的是,原先的sys.platform ='linux3'的sandbox.py代码已与旧系统兼容。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM