上载Python时,向S3请求GZipped正文,但仅在内容完全接收之后

问题描述

我正在尝试将API请求GZipped响应按原样上传到AWS S3存储桶,并让SNowflake SNowpipe进一步将其上传到SNowflake数据库。我认为最好不要在上传之前解压缩结果,因为这是不必要的。

我正在使用这样的Python代码

with requests.get(api_url,headers=headers,stream=True) as response:

    if response.status_code != requests.codes.ok:
        response.raise_for_status()

    s3_client = BOTO3_SESSION.client('s3')
    s3_client.upload_fileobj(Fileobj=response.raw,Bucket=s3_bucket,Key=s3_key)

在大多数情况下,这就像一个符咒,但是尽管上传文件没有问题,但是SNowpipe有时不会上传文件。我怀疑是在文件完全上传之前发送了SNS通知。在一种情况下,S3文件的最新写入时间戳要比SNowflake函数@R_151_4045@ion_schema.copy_history通知的PIPE_RECEIVED_TIME晚7秒钟。

我认为SNowpipe会尝试上载尚未完全写入S3的文件,并且一旦设计完成文件就不会再次上载,因为文件只有在首次创建时才由SNowpipe上载。 / p>

是否有一种方法可以确保在将响应上载到S3之前完全对其进行检索而又不解压缩响应主体?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)