我正在尝试迁移AWS Lambda编写的函数PythonCF
输出 > 2GB - 但略小于 3GB 所以它适合Lambda,只是.
好吧,这似乎是不可能的,或者更多地涉及GCP:
/tmp- 在撰写本文时限制为 2048MB - 所以 Python 客户端库upload_from_file(或_filename无法使用)boto一个最初为 设计的库AWS S3,并且已经过时boto3了一段时间。没有真正的GCP流式写入或读取方法createWriteStream()-好的文章在这里顺便说一句-但没有相应的一行代码在PythonGCS是本地文件系统一样。这不仅限于Cloud FunctionsPython Client 库所缺乏的功能,而且由于资源限制,它在 CF 中更为突出。顺便说一句,我参与了添加可写 IOBase 函数的讨论,但它没有吸引力。python azure-storage google-cloud-storage aws-lambda google-cloud-functions
我需要将许多(1000+)个文件从GCS复制到s3以利用AWS lambda函数.我已经编辑~/.boto.cfg并注释掉了2个aws身份验证参数,但是GCE或EC2 VM出现了简单的gsutil ls s3://mybucket故障.
错误是The authorization mechanism you have provided is not supported. Please use AWS4-HMAC-SHA256..
我用的gsutil版本:4.28和位置GCS和S3桶分别是US-CENTRAL1和US East (Ohio)-的情况下,这是相关的.
我无能为力,因为AWS密钥有效,我启用了http/https.从GCS下载并使用我的笔记本电脑的Cyberduck上传到S3是不切实际的(> 230Gb)
我有一个大型 (1M) 数据库结果集,我想为每一行调用 REST API。
API 可以接受批量请求,但我不确定如何对rows生成器进行切片,以便每个任务处理一个行列表,例如 10 行。我宁愿不预先读取所有行并坚持使用生成器。
在一个 http 请求中发送my_function一个列表是很容易的,但是呢asyncio.gather?也许其中之一itertools可以提供帮助。
请参阅下面的通用伪代码进行说明:
async def main(rows):
async with aiohttp.ClientSession() as session:
tasks = [my_function(row, session) for row in rows]
return await asyncio.gather(*tasks)
rows = <generator of database rows>
results = asyncio.run(main(rows))
Run Code Online (Sandbox Code Playgroud)
注意:它们results很小,基本上是每行的确认值。
顺便说一句,
asyncio.gather()可以(有效)处理的任务数量是否有限制?gather()将所有请求/任务加载到内存中,消耗 50GB(!)。如何即时读取和传递行和任务以减少内存使用?这是asyncio.BoundedSemaphore()用来做什么的吗?aiohttp很棒asyncio但很难理解 - 我同意这篇文章:
asyncio 一直在变化,所以要警惕旧的 Stack Overflow …
我们有要加载的文件,其中字段值由“单位分隔符”分隔。0x1f
根据doc,如果不可打印,则应使用UTF-8进行编码。
使用bqCLI,我尝试将-F参数传递U+001F给毫无用处:BigQuery error in load operation: Field delimiter must be a single character, found:"U+001F"。带或不带引号的`\ x1f'
都不运气0x1F。
我的编码是否错误bq,或者是API中的错误?
编辑:
与资源管理器一起玩后,发现它是不喜欢定界符的API。除了可打印的分隔符,您还可以使用\t未记录的\b(退格键)和\f(表单字段)。
tab可以是自由格式文本字段中有效的用户输入字符,因此我们需要使用控制字符(从“ unit sep”转换后)
EDIT2: :
请注意,\f作为分隔符不做工精细通过API直接而不是bqCLI( Field delimiter must be a single character, found:"\f")。