Каждый день файл Excel автоматически загружается в мою учетную запись хранения BLOB-объектов Azure. У меня есть сценарий Python, который читает файл Excel, извлекает необходимую информацию и сохраняет выходные данные в виде нового большого двоичного объекта в учетной записи хранения Azure. Я установил Docker-контейнер, который запускает этот скрипт Python. Он работает правильно при локальном запуске.
Я поместил образ Docker в реестр контейнеров Azure и попытался настроить приложение логики Azure, которое запускает контейнер с этим образом Docker каждый день в одно и то же время. Однако он работает не с самой последней версией моей учетной записи хранения Azure.
Например, прошлой ночью я отправил обновленную версию образа Docker. Сегодня утром в учетную запись хранения Azure был добавлен новый файл Excel, а приложение логики запустилось через час. Однако контейнер с изображением Docker обнаружил только те файлы, которые присутствовали вчера в учетной записи хранения Azure (поэтому в нем отсутствовал самый последний файл, который я проанализировал).
Я подтвердил, что проблема не в приложении логики, поскольку я добавил шаг в приложение логики, чтобы вывести список файлов в учетной записи хранения Azure, и этот список включал самый последний файл.
ОБНОВЛЕНИЕ: я подтвердил, что у меня есть доступ к правильной версии переменных среды. Проблема остается: кажется, что контейнер Docker обращается к хранилищу BLOB-объектов Azure, как это было в то время, когда я в последний раз помещал образ Docker в реестр контейнера. Моя текущая работа заключается в том, чтобы ежедневно помещать одно и то же изображение в реестр, но это раздражает.
ДРУГОЕ ОБНОВЛЕНИЕ: Вот код для получения самого последнего большого двоичного объекта (файл Excel). Дата всегда содержится в названии блоба. Теоретически, он находит 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-объекты, похоже, не обновляются. Он возвращает самый последний большой двоичный объект на дату, когда я последний раз помещал изображение в реестр.
Я также проверил print(date.today())
в том же сценарии, и это работает, как и ожидалось (печатает текущую дату).