python - 允许 Python 模块写入 AWS Lambda 上的磁盘
问题描述
我在 AWS Lambda 上使用 Python 模块 googlesearch,但它抛出错误 - 我怀疑是因为它想根据 AWS Lambda 上不存在的文件夹结构将 cookie 写入磁盘。
此外,AWS Lambda 只允许写入 /tmp/
该怎么办?我唯一能想到的就是从 github 下载模块代码并集成到我的 Python 脚本中——真的不想走那条路……
感谢您的任何建议...
这是 AWS Lambda 错误报告:
Errno 30] Read-only file system: './.google-cookie': OSError
Traceback (most recent call last):
File "/var/task/scriverto.py", line 176, in lambda_handler
url_list = generate_URL_list(query,n) #call URL generator routine in gsearch
File "/var/task/scriverto.py", line 58, in generate_URL_list
for url in search(query, tld = "co.uk", lang='en', pause = 2, stop=n):
#can also add tld to limit to country e.g. tld='uk
File "/var/task/googlesearch/__init__.py", line 330, in search
get_page(url_home % vars())
File "/var/task/googlesearch/__init__.py", line 151, in get_page
cookie_jar.save()
File "/var/lang/lib/python3.6/http/cookiejar.py", line 1875, in save
with open(filename, "w") as f:
OSError: [Errno 30] Read-only file system: './.google-cookie'
解决方案
阅读模块的源代码googlesearch
:
# Cookie jar. Stored at the user's home folder.
home_folder = os.getenv('HOME')
if not home_folder:
home_folder = os.getenv('USERHOME')
if not home_folder:
home_folder = '.' # Use the current folder on error.
cookie_jar = LWPCookieJar(os.path.join(home_folder, '.google-cookie'))
try:
cookie_jar.load()
except Exception:
pass
看来您可以设置环境变量HOME
或USERHOME
将/tmp
导致googlesearch
使用这些位置将 cookiejar 写入磁盘的环境变量。
推荐阅读
- python-2.7 - 如何向我的 DRF API 响应值添加密钥
- javascript - 仅使用 React 钩子(使用 Sandbox)来处理调整大小事件的节流函数(lodash 启发)
- firebase-realtime-database - 如何循环显示来自firebase的数据
- sql - 在 sql 中查找彼此在毫秒内完成的条目
- php - 检查类似的会话变量,如果存在则仅增加数量
- hive - 创建外部表时出现相对路径错误
- pandas - Pandas 使用正确的内部名称保存 CSV ZIP
- python - 为什么当我加载模块太多次时python会抛出错误以及如何修复?
- python - 如何从内部确定 Python 模块/文件是导入还是独立调用?
- python - 如何在 Python 中添加天蓝色标签数组