Как удалить файлы, хранящиеся в хранилище Службы приложений Azure, с помощью функций Azure?

У меня есть система RAG, которая извлекает определенные файлы из внешнего хранилища и помещает их в ChromaDB в памяти после преобразования их во встраивания. Теперь файлы, которые можно получить, зависят от пользователя. Для отдельного пользователя будет создан уникальный каталог, в котором будут храниться данные этой векторной базы данных. Я развертываю эту систему с помощью службы приложений Azure. Мое требование состоит в том, чтобы каталог конкретного пользователя был удален в течение 72 часов, если он или она не задает никаких дополнительных вопросов. Для этой же цели я планирую использовать триггер таймера функций Azure, который проверяет дату создания каталога каждые 24 часа. Сообщите мне, как я могу получить доступ к хранилищу Службы приложений с помощью функций.

Я пытался использовать хранилище BLOB-объектов для хранения данных, но мне хотелось бы хранить их в памяти службы приложений.

Предоставьте достаточно кода, чтобы другие могли лучше понять или воспроизвести проблему.

Community 15.07.2024 01:45
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
1
82
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Kudu API можно использовать для удаления файлов или каталогов. https://webappname.scm,azurewebsites.net/api/vfs/<path/to/directory>

Ниже код работал у меня.

Я использовал триггер Http, чтобы удалить каталог Vivek в site/wwwroot.

Примечание :-

  1. используется ?recusive=true для удаления всех файлов внутри папки или каталога.
  2. имя пользователя и пароль доступны в профиле публикации.
  3. `DefaultAzureCredential() из azure.identity можно использовать для учетных данных.

function_app.py:

import azure.functions as func
import requests
import base64
import logging
import json

app = func.FunctionApp()


@app.route(route = "http_trigger", auth_level=func.AuthLevel.ANONYMOUS, methods= ['get'])
def http_trigger(req: func.HttpRequest) -> func.HttpResponse:

    app_name = "flask9july"
    username = "xxxxxxxxxx"
    password = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
    try:
        kudu_api_url = f"https://{app_name}.scm.azurewebsites.net/api/vfs/site/wwwroot"
        credentials = base64.b64encode(f"{username}:{password}".encode('utf-8')).decode('utf-8')
        headers = {
            "Authorization": f"Basic {credentials}"
        }
        before_response = requests.get(kudu_api_url,headers=headers)
        before_status= before_response.status_code
        before_data = before_response.json()

        before_response_json = {
                    "data": before_data
                }
        #deleteting files or folders        
        delete = requests.delete(f"{kudu_api_url}/Vivek/?recursive=true",headers=headers)

        after_delete = requests.get(kudu_api_url,headers=headers)
        after_status= after_delete.status_code
        data = after_delete.json()

        after_data  = {

            "data": data
        }
        return func.HttpResponse(f"before delete list: \n{json.dumps(before_response_json)} \n\nDeleted sucessfully \n\nAfter delete list: \n{json.dumps(after_data)}", mimetype = "application/json", status_code=200)

    except Exception as e:
        return func.HttpResponse(f"Error: {str(e)}")

OUTPUT:

Папка Vivek удалена

Большое спасибо за пост. Рассмотрю это со своей стороны.

Ashcom 19.07.2024 09:50

Другие вопросы по теме

Проблема с PIP Python в функциях Azure
Получение TaskCanceledException при использовании проверки подлинности без пароля с помощью функций Azure и Entity Framework с SQL Server
Почему моя функция Azure не может прочитать переменную среды, определенную в классе запуска?
Функция Azure, работающая в виртуальной сети, не может подключиться к кэшу Redis Azure, занесенному в белый список
Функции Azure в Python: ошибка «Требуется дуплексный режим»
Ошибка авторизации при отправке большого двоичного объекта с управляемой идентификацией
Приложение-функция Azure — нет настройки непрерывного развертывания для плана хостинга «Гибкое потребление»?
Как настроить проверку утверждения конвейера Azure для развертывания в приложениях-функциях Azure?
Как получить доступ к строке подключения с помощью Python
Как полностью остановить локальный запуск функции Azure? Функция Azure [Python V2] продолжает предыдущее выполнение при перезапуске отладчика [VS Code]?