У меня есть система RAG, которая извлекает определенные файлы из внешнего хранилища и помещает их в ChromaDB в памяти после преобразования их во встраивания. Теперь файлы, которые можно получить, зависят от пользователя. Для отдельного пользователя будет создан уникальный каталог, в котором будут храниться данные этой векторной базы данных. Я развертываю эту систему с помощью службы приложений Azure. Мое требование состоит в том, чтобы каталог конкретного пользователя был удален в течение 72 часов, если он или она не задает никаких дополнительных вопросов. Для этой же цели я планирую использовать триггер таймера функций Azure, который проверяет дату создания каталога каждые 24 часа. Сообщите мне, как я могу получить доступ к хранилищу Службы приложений с помощью функций.
Я пытался использовать хранилище BLOB-объектов для хранения данных, но мне хотелось бы хранить их в памяти службы приложений.
Kudu API можно использовать для удаления файлов или каталогов.
https://webappname.scm,azurewebsites.net/api/vfs/<path/to/directory>
Ниже код работал у меня.
Я использовал триггер Http, чтобы удалить каталог Vivek
в site/wwwroot
.
Примечание :-
- используется
?recusive=true
для удаления всех файлов внутри папки или каталога.- имя пользователя и пароль доступны в профиле публикации.
- `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
удалена
Большое спасибо за пост. Рассмотрю это со своей стороны.
Предоставьте достаточно кода, чтобы другие могли лучше понять или воспроизвести проблему.