小编sam*_*sam的帖子

如何在 Python 中模拟 boto3 的 StreamingBody 对象以使用 BytesIO 进行处理?

我正在对一个函数进行单元测试,该函数将元素从 S3 对象转换为 pandas DataFrame,并且需要模拟从 boto3 返回的 StreamingBody 对象

文件.py

def object_to_df(self, key_name, dtypes):
    s3_object = self.get_object(key_name=key_name)
    if s3_object is not None:
        object_df = pandas.read_csv(
            io.BytesIO(s3_object["Body"].read()), dtype=dtypes
        )
        return object_df
Run Code Online (Sandbox Code Playgroud)

self.get_object(key_name) 的响应记录在此处

{
    'Body': StreamingBody(),
    'DeleteMarker': True|False,
    'AcceptRanges': 'string',
    ...
}
Run Code Online (Sandbox Code Playgroud)

所以我需要模拟 StreamingBody() 对象并让我的模拟函数返回该对象。

测试.py

{
    'Body': StreamingBody(),
    'DeleteMarker': True|False,
    'AcceptRanges': 'string',
    ...
}
Run Code Online (Sandbox Code Playgroud)

但我遇到了TypeError: 'StreamingBody' object is not subscriptable

有什么提示吗?

python unit-testing mocking amazon-s3 boto3

8
推荐指数
2
解决办法
8460
查看次数

错误:获取存储源时出错:generic::unknown... 当通过 GitHub Actions 部署 GCP Cloud Function 时

我正在通过此 GitHub Action部署 Firebase Cloud Function 。当我使用服务帐户从我自己的机器部署时,它工作正常。使用相同的服务帐户运行操作时,我遇到了以下错误。

最终错误:

错误:错误获取存储源:通用::未知:重试预算用尽(3次尝试):获取gcs源:从gcs解包源:源提取容器以非零状态退出:9

之前的日志:

未找到中央目录结尾签名。该文件不是一个 zipfile,或者它构成了一个多部分存档的磁盘。在后一种情况下,将在此存档的最后一个磁盘上找到中央目录和 zipfile 注释。解压缩:在 /tmp/source-archive.zip 或 /tmp/source-archive.zip.zip 之一中找不到 zipfile 目录,并且找不到 /tmp/source-archive.zip.ZIP,句号。

这是我的操作 yml:

name: Deploy
on:
  pull_request:
    branches: 
        - master

jobs:
  integration-test:
    name: Run tests
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v2
    - name: checkout repo and set up Node.js v12.x
      uses: actions/setup-node@v1
      with:
        node-version: 12.x
    - name: Install dependencies
      run: cd ./functions/ && npm install
    - id: deploy
      name: Deploy my_function to Cloud Functions
      uses: google-github-actions/deploy-cloud-functions@v0.1.2
      with:
        name: …
Run Code Online (Sandbox Code Playgroud)

github firebase google-cloud-platform google-cloud-functions github-actions

8
推荐指数
3
解决办法
2144
查看次数

如何列出依赖于 Redshift 中特定表的表/视图?

在进行更改之前,我需要检查给定表的下游依赖关系。我将如何列出依赖于 Specific_table 的任何 Redshift 表或视图?

我试过:

SELECT DISTINCT c_p.oid AS tbloid
    ,n_p.nspname AS schemaname
    ,c_p.relname AS NAME
    ,n_c.nspname AS refbyschemaname
    ,c_c.relname AS refbyname
    ,c_c.oid AS viewoid
FROM pg_class c_p
JOIN pg_depend d_p ON c_p.relfilenode = d_p.refobjid
JOIN pg_depend d_c ON d_p.objid = d_c.objid
JOIN pg_class c_c ON d_c.refobjid = c_c.relfilenode
LEFT JOIN pg_namespace n_p ON c_p.relnamespace = n_p.oid
LEFT JOIN pg_namespace n_c ON c_c.relnamespace = n_c.oid
WHERE d_c.deptype = 'i'::"char"
AND c_c.relkind = 'v'::"char"
and schemaname like 'actual_schema_name'
and name …
Run Code Online (Sandbox Code Playgroud)

sql amazon-redshift

2
推荐指数
1
解决办法
5400
查看次数