- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个每天运行一次的 Python Azure Functions 计时器触发器,并将文件从通用 v2 热存储容器归档到通用 v2 冷存储容器。我正在使用 Linux 消费计划。代码如下所示:
container = ContainerClient.from_connection_string(conn_str=hot_conn_str,
container_name=hot_container_name)
blob_list = container.list_blobs(name_starts_with = hot_data_dir)
files = []
for blob in blob_list:
files.append(blob.name)
for file in files:
blob_from = BlobClient.from_connection_string(conn_str=hot_conn_str,
container_name=hot_container_name,
blob_name=file)
data = blob_from.download_blob()
blob_to = BlobClient.from_connection_string(conn_str=cold_conn_str,
container_name=cold_container_name,
blob_name=f'archive/{file}')
try:
blob_to.upload_blob(data.readall())
except ResourceExistsError:
logging.debug(f'file already exists: {file}')
except ResourceNotFoundError:
logging.debug(f'file does not exist: {file}')
container.delete_blob(blob=file)
在过去的几个月里,这对我来说一直有效,没有任何问题,但在过去的两天里,我在存档过程中看到了这个错误:操作已超时。
除此之外没有其他有意义的错误消息。如果我通过 UI 手动调用该函数,它将成功归档其余文件。 Blob 的大小范围从几 KB 到大约 5 MB,超时错误似乎发生在 2-3MB 的文件上。一次只运行一个调用,所以我认为我没有超过消耗计划的 1.5GB 内存限制(我已经看到 python 由于代码 137 中的内存问题退出了过去的)。为什么我突然收到此错误,而它已经完美运行了几个月?
更新
我想我将尝试使用此处找到的方法进行存档,这样我就不必将 blob 内容存储在 Python 的内存中:https://www.europeclouds.com/blog/moving-files-between-storage-accounts-with-azure-functions-and-event-grid
最佳答案
仅从评论中总结解决方案以供其他社区引用:
正如评论中提到的,OP使用 start_copy_from_url()方法来实现与解决方法相同的要求。
start_copy_from_url()
可以直接将文件从原始blob处理到目标blob,它比使用data = blob_from.download_blob()
临时存储文件要快得多然后将数据
上传到目标blob。
关于用于计时器触发 blob 存档的 Azure Functions "The operation has timed out.",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64900251/
我是一名优秀的程序员,十分优秀!