Skip to content

Commit 821dd82

Browse files
committed
Bug fix: Improve scheduler logic
- Auto-sync with SimpleFIN every 6 hours. - Snapshot daily balance every night. - Set up monthly budget on the 1st of each month.
1 parent 775ab51 commit 821dd82

2 files changed

Lines changed: 21 additions & 25 deletions

File tree

SparkyBudget/SparkyBudget.py

Lines changed: 8 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,15 @@
1-
#app.py
1+
#SparkyBudget.py
22

3-
import locale,os, sqlite3, re, secrets
4-
from datetime import datetime, timedelta, timezone
3+
import locale,os, secrets
4+
from datetime import timedelta
55
from threading import Lock
6-
from flask import Flask, jsonify, redirect, render_template, request, session, url_for, Blueprint
7-
from flask_login import LoginManager, current_user, login_required
6+
from flask import Flask, jsonify
7+
from flask_login import LoginManager, login_required
88

99
#py_utils
10-
from py_utils.auth import load_user, login, logout, before_request, unauthorized, User
11-
from py_utils.currency_utils import format_money, format_money_whole, format_currency
10+
from py_utils.auth import load_user, login, logout, before_request, unauthorized
1211
from py_utils.currency_utils import app as currency_app
13-
from py_utils.daily_balance_history import daily_balance_history_insert
1412
from py_utils.manage_categories import manage_categories_bp
15-
from py_utils.monthly_budget_insert import month_budget_update_using_template
1613
from py_utils.scheduler import start_scheduler
1714
from py_utils.SimpleFinToDB import process_accounts_data
1815
from py_utils.subcategory_update import subcategory_update_bp
@@ -89,7 +86,8 @@ def download_data():
8986

9087

9188
scheduler_thread = start_scheduler()
89+
print(f"Scheduler thread alive: {scheduler_thread.is_alive()}")
9290

9391
# Run the Flask app with the SSL context
94-
app.run(host="0.0.0.0", port=5000, ssl_context=ssl_context, debug=True)
92+
app.run(host="0.0.0.0", port=5000, ssl_context=ssl_context, debug=False)
9593

SparkyBudget/py_utils/scheduler.py

Lines changed: 13 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,36 +1,34 @@
1-
#py_utils/scheduler.py
2-
31
import schedule
42
import time
53
import threading
64
from datetime import datetime
5+
import logging
6+
7+
logging.basicConfig(level=logging.INFO)
8+
logger = logging.getLogger(__name__)
79

8-
# Import the functions that need to be scheduled
910
from py_utils.monthly_budget_insert import month_budget_update_using_template
1011
from py_utils.daily_balance_history import daily_balance_history_insert
1112
from py_utils.SimpleFinToDB import process_accounts_data
1213

13-
# Schedule the tasks
1414
def setup_scheduler():
15-
# Schedule monthly budget update
16-
schedule.every().day.at("01:00").do(month_budget_update_using_template)
17-
18-
# Schedule daily balance history insert
19-
schedule.every().day.at("23:55").do(daily_balance_history_insert)
20-
21-
# Schedule account data processing
22-
schedule.every(4).hours.do(process_accounts_data)
15+
logger.info(f"Setting up scheduler at {datetime.now()}")
16+
schedule.every().day.at("01:00").do(lambda: logger.info(f"Running monthly budget update at {datetime.now()}") or month_budget_update_using_template())
17+
schedule.every().day.at("23:55").do(lambda: logger.info(f"Running daily balance history at {datetime.now()}") or daily_balance_history_insert())
18+
schedule.every(4).hours.do(lambda: logger.info(f"Running account data processing at {datetime.now()}") or process_accounts_data())
19+
#schedule.every(1).minutes.do(lambda: logger.info(f"Running account data processing at {datetime.now()}") or process_accounts_data())
2320

24-
# Run the scheduler in a background thread
2521
def run_scheduler():
2622
setup_scheduler()
2723
while True:
24+
next_run = schedule.next_run()
25+
#logger.info(f"Next scheduled task: {next_run}")
2826
schedule.run_pending()
2927
time.sleep(10)
3028

31-
# Function to start the scheduler in a separate thread
3229
def start_scheduler():
3330
scheduler_thread = threading.Thread(target=run_scheduler)
34-
scheduler_thread.daemon = True # Set as daemon so it will exit when the main program exits
31+
scheduler_thread.daemon = True
3532
scheduler_thread.start()
33+
logger.info("Scheduler thread started")
3634
return scheduler_thread

0 commit comments

Comments
 (0)