python - Pandas:AWS S3 存储桶中的“read_csv”函数有时会返回“FileNotFoundError”
问题描述
我开发了一个 AWS lambda,它在“eu-west-1”区域中的 s3 事件(文件创建)上触发。此 lambda 读取触发它的“csv”文件,然后对其进行处理(因此存在!)...总执行时间最长为 4 秒。文件每 10 秒左右到达一次,并且它在几周内一直都能完美运行。今天,20 分钟,当 lambda 读取触发它的文件时,“FileNotFoundError”异常系统地导致错误。几分钟后,当我手动重新上传产生错误的文件时,lambda 成功运行。
这是 lambda 代码的示例:
import pandas as pd
import boto3
...
def lambda_handler(event, context):
for record in event['Records']:
bucket_name = record['s3']['bucket']['name']
source_key = unquote_plus(record['s3']['object']['key'])
df = pd.read_csv(f"s3://{bucket_name}/{source_key}", sep=',', index_col=0) # Returns sometimes "FileNotFoundError"
...
以下是 lambda 执行返回的错误日志:
[ERROR] FileNotFoundError: frefin-bitbot-prd-202714940105-eu-west-1-data/data/collection/kraken/order_book/depth-100/compilation/xxbtzusd/timeframe-10/shift-0/XXBTZUSD_1599718540_1599718550_10_0.csv
Traceback (most recent call last):
File "/var/task/entrypoint.py", line 96, in lambda_handler
df = pd.read_csv(f"s3://{bucket_name}/{source_key}", sep=',', index_col=0)
File "/var/task/pandas/io/parsers.py", line 686, in read_csv
return _read(filepath_or_buffer, kwds)
File "/var/task/pandas/io/parsers.py", line 435, in _read
filepath_or_buffer, encoding, compression
File "/var/task/pandas/io/common.py", line 222, in get_filepath_or_buffer
filepath_or_buffer, mode=mode or "rb", **(storage_options or
{}
)
File "/var/task/fsspec/core.py", line 133, in open
out = self.__enter__()
File "/var/task/fsspec/core.py", line 101, in __enter__
f = self.fs.open(self.path, mode=mode)
File "/var/task/fsspec/spec.py", line 844, in open
**kwargs
File "/var/task/s3fs/core.py", line 378, in _open
autocommit=autocommit, requester_pays=requester_pays)
File "/var/task/s3fs/core.py", line 1097, in __init__
cache_type=cache_type)
File "/var/task/fsspec/spec.py", line 1134, in __init__
self.details = fs.info(path)
File "/var/task/s3fs/core.py", line 527, in info
if self.version_aware or (key and self._ls_from_cache(path) is None) or refresh:
File "/var/task/fsspec/spec.py", line 321, in _ls_from_cache
raise FileNotFoundError(path)
我对此有两个问题:
- 您对此错误有解释吗?
- 如何最好地处理这种情况?
提前致谢
解决方案
推荐阅读
- python - 导出 R text2vec 向量以在 Python 中的 Gensim 中使用
- python - 在 Pygame 中计时敌人列表的 blit
- python - Pyspark - 在 groupBy 之后返回选定的列。和聚合
- r - 如何使用选择负数定义基线
- javascript - 如何在 Javascript 的 If/Else 语句中添加两个以上的条件?
- google-cloud-platform - 部署时云函数抛出错误
- flutter - 在 Flutter 中隐藏文本字段中的某些字符
- ios - 在 Xcode 中显示 AdMob gdpr 同意书
- python - 2020 年谷歌编码挑战题:未指明的单词
- vbscript - 了解 VBS 多行符号