optymalizacje_kodu #8
22
app.py
22
app.py
@@ -49,6 +49,8 @@ from collections import defaultdict, deque
|
||||
from functools import wraps
|
||||
from flask_talisman import Talisman
|
||||
from flask_session import Session
|
||||
from sqlalchemy.exc import OperationalError
|
||||
|
||||
|
||||
# OCR
|
||||
import pytesseract
|
||||
@@ -229,6 +231,26 @@ class Receipt(db.Model):
|
||||
shopping_list = db.relationship("ShoppingList", back_populates="receipts")
|
||||
|
||||
|
||||
@app.errorhandler(OperationalError)
|
||||
def handle_db_error(e):
|
||||
app.logger.error(f"[Błąd DB] {e}")
|
||||
|
||||
if request.accept_mimetypes.best == "application/json":
|
||||
return jsonify({
|
||||
"error": "Baza danych jest obecnie niedostępna. Spróbuj ponownie później."
|
||||
}), 503
|
||||
|
||||
return (
|
||||
render_template(
|
||||
"errors.html",
|
||||
code=503,
|
||||
title="Błąd połączenia z bazą danych",
|
||||
message="Nie udało się połączyć z bazą danych. Spróbuj ponownie później.",
|
||||
),
|
||||
503,
|
||||
)
|
||||
|
||||
|
||||
def hash_password(password):
|
||||
pepper = app.config["BCRYPT_PEPPER"]
|
||||
peppered = (password + pepper).encode("utf-8")
|
||||
|
@@ -1,3 +1,12 @@
|
||||
#!/bin/sh
|
||||
|
||||
# Czekaj aż baza będzie gotowa
|
||||
echo "Czekam na MySQL..."
|
||||
until nc -z -v -w30 "$DB_HOST" "$DB_PORT"
|
||||
do
|
||||
echo "Baza jeszcze nie odpowiada, czekam..."
|
||||
sleep 2
|
||||
done
|
||||
|
||||
flask db upgrade 2>/dev/null || flask db_info
|
||||
exec python app.py
|
||||
|
Reference in New Issue
Block a user