【发布时间】:2020-02-14 11:03:36
【问题描述】:
每天,Excel 文件都会自动上传到我的 Azure blob 存储帐户。我有一个 Python 脚本,它读取 Excel 文件,提取必要的信息,并将输出保存为 Azure 存储帐户中的新 blob。我设置了一个运行这个 Python 脚本的 Docker 容器。在本地运行时可以正常工作。
我将 Docker 映像推送到 Azure 容器注册表,并尝试设置一个 Azure 逻辑应用程序,该应用程序每天在同一时间使用此 Docker 映像启动一个容器。它运行,但是,它似乎不适用于我的 Azure 存储帐户的最新版本。
例如,我昨晚推送了 Docker 镜像的更新版本。今天早上向 Azure 存储帐户添加了一个新的 Excel 文件,逻辑应用在一小时后运行。但是,带有 Docker 映像的容器仅找到了昨天存在于 Azure 存储帐户中的文件(因此它丢失了最新的文件,这是我需要分析的文件)。
我确认问题不在于逻辑应用,因为我在逻辑应用中添加了一个步骤来列出 Azure 存储帐户中的文件,并且此列表包含最新的文件。
更新:我已确认我正在访问正确版本的环境变量。问题仍然存在:Docker 容器似乎可以访问 Azure blob 存储,就像我最近将 Docker 映像推送到容器注册表时一样。我目前的工作是每天将相同的图像推送到注册表,但这很烦人。
另一个更新:这是获取最新 blob(Excel 文件)的代码。日期始终包含在 blob 的名称中。理论上,它会找到日期最近的 blob:
blobs = blob_service.list_blobs(container_name=os.environ.get("CONTAINERNAME"))
blobstring = blob_service.get_blob_to_text(os.environ.get("CONTAINERNAME"),
backup_csv).content
current_df = pd.read_csv(StringIO(blobstring))
add_n = 1
blob_string = re.compile("sales.xls")
for b in blobs:
if blob_string.search(b.name):
dt = b.name[14:24]
dt = datetime.strptime(dt, "%Y-%m-%d").date()
date_list.append(dt)
today = max(date_list)
print(today)
但是,blob 似乎没有更新。它返回截至我上次将图像推送到注册表之日的最新 blob。
我还在同一个脚本中检查了print(date.today()),它按预期工作(它打印当前日期)。
【问题讨论】:
-
您如何确定您拥有哪些现有文件?
-
用 Python 代码更新了问题
标签: python-3.x docker azure-logic-apps azure-blob-storage