Commit
·
d334a2b
1
Parent(s):
ffd31a1
Reduce pushes + add logging to find issue
Browse files
app.py
CHANGED
@@ -514,6 +514,7 @@ def dump_database_to_json():
|
|
514 |
return
|
515 |
|
516 |
votes = get_all_votes()
|
|
|
517 |
json_data = [
|
518 |
{
|
519 |
"id": vote.id,
|
@@ -528,10 +529,17 @@ def dump_database_to_json():
|
|
528 |
]
|
529 |
|
530 |
json_file_path = JSON_DATASET_DIR / "votes.json"
|
531 |
-
|
|
|
|
|
532 |
with commit_scheduler.lock:
|
533 |
-
|
534 |
-
|
|
|
|
|
|
|
|
|
|
|
535 |
|
536 |
logging.info("Database dumped to JSON")
|
537 |
|
@@ -556,7 +564,7 @@ def schedule_dump_database(interval=60):
|
|
556 |
|
557 |
|
558 |
if __name__ == "__main__":
|
559 |
-
schedule_dump_database() # Start the periodic database dump
|
560 |
demo = gradio_interface()
|
561 |
|
562 |
demo.launch()
|
|
|
514 |
return
|
515 |
|
516 |
votes = get_all_votes()
|
517 |
+
logging.info("Preparing to dump %d votes to JSON", len(votes))
|
518 |
json_data = [
|
519 |
{
|
520 |
"id": vote.id,
|
|
|
529 |
]
|
530 |
|
531 |
json_file_path = JSON_DATASET_DIR / "votes.json"
|
532 |
+
json_temp_path = JSON_DATASET_DIR / "votes.json.tmp"
|
533 |
+
|
534 |
+
# Upload to Hugging Face with atomic writes
|
535 |
with commit_scheduler.lock:
|
536 |
+
# Write to temporary file first
|
537 |
+
with json_temp_path.open("w") as f:
|
538 |
+
json.dump(json_data, f)
|
539 |
+
# Atomically replace the target file
|
540 |
+
os.replace(json_temp_path, json_file_path)
|
541 |
+
file_size = json_file_path.stat().st_size
|
542 |
+
logging.info("JSON dump succeeded; new file size is %d bytes", file_size)
|
543 |
|
544 |
logging.info("Database dumped to JSON")
|
545 |
|
|
|
564 |
|
565 |
|
566 |
if __name__ == "__main__":
|
567 |
+
schedule_dump_database(3600) # Start the periodic database dump
|
568 |
demo = gradio_interface()
|
569 |
|
570 |
demo.launch()
|
db.py
CHANGED
@@ -48,7 +48,13 @@ def fill_database_once(dataset_name="bgsys/votes_datasets_test2"):
|
|
48 |
with SessionLocal() as db:
|
49 |
# Check if the database is already filled
|
50 |
if db.query(Vote).first() is None:
|
51 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
52 |
for record in dataset['train']:
|
53 |
# Ensure the timestamp is a string
|
54 |
timestamp_str = record.get("timestamp", datetime.utcnow().isoformat())
|
@@ -68,7 +74,7 @@ def fill_database_once(dataset_name="bgsys/votes_datasets_test2"):
|
|
68 |
db_vote = Vote(**vote_data)
|
69 |
db.add(db_vote)
|
70 |
db.commit()
|
71 |
-
logging.info("Database filled with
|
72 |
else:
|
73 |
logging.info("Database already filled, skipping dataset loading.")
|
74 |
|
|
|
48 |
with SessionLocal() as db:
|
49 |
# Check if the database is already filled
|
50 |
if db.query(Vote).first() is None:
|
51 |
+
try:
|
52 |
+
dataset = load_dataset(dataset_name)
|
53 |
+
logging.info("Successfully loaded Hub dataset %s with %d records.", dataset_name, len(dataset['train']))
|
54 |
+
except Exception:
|
55 |
+
logging.exception("Failed to load Hub dataset %s. Starting with empty local database.", dataset_name)
|
56 |
+
return
|
57 |
+
|
58 |
for record in dataset['train']:
|
59 |
# Ensure the timestamp is a string
|
60 |
timestamp_str = record.get("timestamp", datetime.utcnow().isoformat())
|
|
|
74 |
db_vote = Vote(**vote_data)
|
75 |
db.add(db_vote)
|
76 |
db.commit()
|
77 |
+
logging.info("Database filled with %d records from Hugging Face dataset: %s", len(dataset['train']), dataset_name)
|
78 |
else:
|
79 |
logging.info("Database already filled, skipping dataset loading.")
|
80 |
|