fix: improve load_assets error handling and logging

- Split data_tw and data_us loading into separate try-catch blocks
- Add detailed logging for successful loads and errors
- Ensure variables are always initialized to empty dict on failure
- Fix potential None value issue in strategy_tw route
master
Eric0801 2 months ago
parent ca52a05f19
commit efbb22494e
  1. 20
      main.py

@ -63,11 +63,24 @@ def load_assets():
try: try:
with open('assets_tw.json') as f: with open('assets_tw.json') as f:
data_tw = json.load(f) data_tw = json.load(f)
logger.info(f"Loaded assets_tw.json with {len(data_tw)} items")
except FileNotFoundError as e:
logger.warning(f"Assets file not found: {e}")
data_tw = {}
except Exception as e:
logger.error(f"Error loading assets_tw.json: {e}")
data_tw = {}
if data_us is None:
try:
with open('assets_us.json') as f: with open('assets_us.json') as f:
data_us = json.load(f) data_us = json.load(f)
logger.info(f"Loaded assets_us.json with {len(data_us)} items")
except FileNotFoundError as e: except FileNotFoundError as e:
print(f"Warning: Assets file not found: {e}") logger.warning(f"Assets file not found: {e}")
data_tw = {} data_us = {}
except Exception as e:
logger.error(f"Error loading assets_us.json: {e}")
data_us = {} data_us = {}
def login_required(): def login_required():
@ -234,6 +247,7 @@ def strategy():
else: else:
flash('使用投組功能請先登入。', 'warning') flash('使用投組功能請先登入。', 'warning')
return redirect(url_for('login')) return redirect(url_for('login'))
load_assets() # Ensure assets are loaded
session['tw'] = 0 session['tw'] = 0
return render_template('strategy_tw.html', data_us = data_us, data_tw=data_tw, stock=['TSLA']) return render_template('strategy_tw.html', data_us = data_us, data_tw=data_tw, stock=['TSLA'])
@ -248,6 +262,7 @@ def strategy_tw():
else: else:
flash('使用投組功能請先登入。', 'warning') flash('使用投組功能請先登入。', 'warning')
return redirect(url_for('login')) return redirect(url_for('login'))
load_assets() # Ensure assets are loaded
session['tw'] = 1 session['tw'] = 1
return render_template('strategy_tw.html', data_tw=data_tw, stock=['2330.TW']) return render_template('strategy_tw.html', data_tw=data_tw, stock=['2330.TW'])
@ -625,6 +640,7 @@ def copy_portfolio():
return redirect(url_for('login')) return redirect(url_for('login'))
if not 'tw' in session: if not 'tw' in session:
return redirect(url_for('index')) return redirect(url_for('index'))
load_assets() # Ensure assets are loaded
session['tw'] = 0 session['tw'] = 0
return render_template('strategy_tw.html', data_us = data_us, data_tw=data_tw, stock=session['currStockList']) return render_template('strategy_tw.html', data_us = data_us, data_tw=data_tw, stock=session['currStockList'])

Loading…
Cancel
Save