Spaces:
Running on CPU Upgrade
Running on CPU Upgrade
Added functionality to have at max 10 backups always the most up to date
Browse files- chat_application/main.py +27 -4
chat_application/main.py
CHANGED
|
@@ -33,11 +33,12 @@ from datetime import datetime
|
|
| 33 |
|
| 34 |
class datasetHandler():
|
| 35 |
|
| 36 |
-
def __init__(self,hf_token,mongoDB_name):
|
| 37 |
login(hf_token)
|
| 38 |
self.api = HfApi(token = hf_token)
|
| 39 |
self.DB_name = mongoDB_name
|
| 40 |
self.timestamp = datetime.now().strftime("%Y-%m-%d_%H-%M-%S")
|
|
|
|
| 41 |
|
| 42 |
def make_dump(self):
|
| 43 |
try:
|
|
@@ -49,19 +50,40 @@ class datasetHandler():
|
|
| 49 |
|
| 50 |
def upload_dump(self):
|
| 51 |
try:
|
| 52 |
-
upload_folder(folder_path="/tmp/mongoDBContents",path_in_repo=f"mongoDump_{self.timestamp}", repo_id="ProjectFrozone/MongoDBDumps", repo_type="dataset")
|
| 53 |
return 0
|
| 54 |
except Exception as e:
|
| 55 |
print(e)
|
| 56 |
return 1
|
| 57 |
|
| 58 |
-
def
|
| 59 |
all_files = self.api.list_repo_files(repo_id="ProjectFrozone/MongoDBDumps", repo_type="dataset")
|
| 60 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 61 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 62 |
def dump_db(self):
|
| 63 |
self.make_dump()
|
| 64 |
self.upload_dump()
|
|
|
|
|
|
|
|
|
|
|
|
|
| 65 |
# End database backup code
|
| 66 |
|
| 67 |
#controls
|
|
@@ -472,6 +494,7 @@ def backup_mongo(time):
|
|
| 472 |
token = os.getenv("HF_TOKEN")
|
| 473 |
handler = datasetHandler(token , 'huggingFaceData')
|
| 474 |
handler.dump_db()
|
|
|
|
| 475 |
socketio.sleep(time)
|
| 476 |
|
| 477 |
# Build the routes
|
|
|
|
| 33 |
|
| 34 |
class datasetHandler():
|
| 35 |
|
| 36 |
+
def __init__(self,hf_token,mongoDB_name,max_dumps = 10):
|
| 37 |
login(hf_token)
|
| 38 |
self.api = HfApi(token = hf_token)
|
| 39 |
self.DB_name = mongoDB_name
|
| 40 |
self.timestamp = datetime.now().strftime("%Y-%m-%d_%H-%M-%S")
|
| 41 |
+
self.max_dumps = max_dumps
|
| 42 |
|
| 43 |
def make_dump(self):
|
| 44 |
try:
|
|
|
|
| 50 |
|
| 51 |
def upload_dump(self):
|
| 52 |
try:
|
| 53 |
+
upload_folder(folder_path="/tmp/mongoDBContents",path_in_repo=f"mongoDump_{self.timestamp}", repo_id="ProjectFrozone/MongoDBDumps", repo_type="dataset")
|
| 54 |
return 0
|
| 55 |
except Exception as e:
|
| 56 |
print(e)
|
| 57 |
return 1
|
| 58 |
|
| 59 |
+
def list_dumps(self):
|
| 60 |
all_files = self.api.list_repo_files(repo_id="ProjectFrozone/MongoDBDumps", repo_type="dataset")
|
| 61 |
+
all_dirs = set([f[:f.index("/")] for f in all_files if "mongoDump_" in f])
|
| 62 |
+
dates = sorted([date[date.index("_") + 1:] for date in all_dirs])
|
| 63 |
+
return (all_dirs, dates)
|
| 64 |
+
|
| 65 |
+
def delete_dump(self,dump_name):
|
| 66 |
+
self.api.delete_folder(
|
| 67 |
+
repo_id="ProjectFrozone/MongoDBDumps",
|
| 68 |
+
path_in_repo=f"{dump_name}",
|
| 69 |
+
repo_type="dataset",
|
| 70 |
+
commit_message=f"Deleted {dump_name}"
|
| 71 |
+
)
|
| 72 |
|
| 73 |
+
def cleanup_dataset(self,dirs,dates):
|
| 74 |
+
if len(dates) > self.max_dumps:
|
| 75 |
+
to_remove = dirs[0]
|
| 76 |
+
self.delete_dump(to_remove)
|
| 77 |
+
return f"Deleted {to_remove}"
|
| 78 |
+
return "Nothing to delete"
|
| 79 |
+
|
| 80 |
def dump_db(self):
|
| 81 |
self.make_dump()
|
| 82 |
self.upload_dump()
|
| 83 |
+
|
| 84 |
+
def clean(self):
|
| 85 |
+
dirs,dates = self.list_dumps()
|
| 86 |
+
print(self.cleanup_dataset(dirs,dates))
|
| 87 |
# End database backup code
|
| 88 |
|
| 89 |
#controls
|
|
|
|
| 494 |
token = os.getenv("HF_TOKEN")
|
| 495 |
handler = datasetHandler(token , 'huggingFaceData')
|
| 496 |
handler.dump_db()
|
| 497 |
+
handler.clean()
|
| 498 |
socketio.sleep(time)
|
| 499 |
|
| 500 |
# Build the routes
|