Skip to content

Commit 70f5bd7

Browse files
author
Clément VALENTIN
committed
Merge branch 'main' of github.com:MyElectricalData/myelectricaldata_new
2 parents 38d8fee + 6610dc5 commit 70f5bd7

File tree

3 files changed

+29
-12
lines changed

3 files changed

+29
-12
lines changed

apps/api/src/services/price_scrapers/__init__.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
from .ekwateur_scraper import EkwateurScraper
1010
from .octopus_scraper import OctopusScraper
1111
from .vattenfall_scraper import VattenfallScraper
12+
from .ufc_scraper import UFCQueChoisirScraper
1213

1314
__all__ = [
1415
"BasePriceScraper",
@@ -22,4 +23,5 @@
2223
"EkwateurScraper",
2324
"OctopusScraper",
2425
"VattenfallScraper",
26+
"UFCQueChoisirScraper",
2527
]

apps/api/src/services/price_update_service.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
import logging
88

99
from ..models import EnergyProvider, EnergyOffer
10-
from .price_scrapers import EDFPriceScraper, EnercoopPriceScraper, TotalEnergiesPriceScraper, PrimeoEnergiePriceScraper, EngieScraper, AlpiqScraper, AlternaScraper, EkwateurScraper, OctopusScraper, VattenfallScraper
10+
from .price_scrapers import EDFPriceScraper, EnercoopPriceScraper, TotalEnergiesPriceScraper, PrimeoEnergiePriceScraper, EngieScraper, AlpiqScraper, AlternaScraper, EkwateurScraper, OctopusScraper, VattenfallScraper, UFCQueChoisirScraper
1111
from .price_scrapers.base import OfferData
1212

1313
logger = logging.getLogger(__name__)
@@ -28,6 +28,7 @@ class PriceUpdateService:
2828
"Ekwateur": EkwateurScraper,
2929
"Octopus": OctopusScraper,
3030
"Vattenfall": VattenfallScraper,
31+
"UFC Que Choisir": UFCQueChoisirScraper,
3132
}
3233

3334
# Default provider info (website URLs)
@@ -42,6 +43,7 @@ class PriceUpdateService:
4243
"Ekwateur": {"website": "https://ekwateur.fr"},
4344
"Octopus": {"website": "https://octopusenergy.fr"},
4445
"Vattenfall": {"website": "https://www.vattenfall.fr"},
46+
"UFC Que Choisir": {"website": "https://www.quechoisir.org"},
4547
}
4648

4749
def __init__(self, db: AsyncSession):

watch-backend.sh

Lines changed: 24 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -48,28 +48,41 @@ echo $$ > "$PID_FILE"
4848
rm -f "$LOCK_FILE"
4949

5050
echo "🔄 Watch-backend started with PID $$"
51-
echo "🔄 Watching for changes in apps/api/src/*.py"
51+
echo "🔄 Watching for changes in apps/api/src/**/*.py (recursive)"
5252
echo "Press Ctrl+C to stop"
5353

54-
# Utilise fswatch sur macOS pour détecter les changements
55-
if command -v fswatch &> /dev/null; then
56-
echo "✅ Using fswatch for file monitoring"
57-
fswatch -o apps/api/src/*.py | while read num ; do
54+
# Debounce: évite les redémarrages multiples pour des changements rapides
55+
DEBOUNCE_SECONDS=2
56+
LAST_RESTART=0
57+
58+
restart_backend() {
59+
CURRENT_TIME=$(date +%s)
60+
if [ $((CURRENT_TIME - LAST_RESTART)) -ge $DEBOUNCE_SECONDS ]; then
5861
echo "[$(date '+%Y-%m-%d %H:%M:%S')] 📝 Change detected, restarting backend..."
5962
docker compose restart backend
6063
echo "[$(date '+%Y-%m-%d %H:%M:%S')] ✅ Backend restarted"
64+
LAST_RESTART=$CURRENT_TIME
65+
else
66+
echo "[$(date '+%Y-%m-%d %H:%M:%S')] ⏳ Debouncing, skipping restart"
67+
fi
68+
}
69+
70+
# Utilise fswatch sur macOS pour détecter les changements (récursif)
71+
if command -v fswatch &> /dev/null; then
72+
echo "✅ Using fswatch for file monitoring (recursive)"
73+
# -r: récursif, -e: exclure, --include: inclure seulement .py
74+
fswatch -r -o --include '\.py$' --exclude '.*' apps/api/src | while read num ; do
75+
restart_backend
6176
done
6277
else
6378
echo "⚠️ fswatch not found, using polling mode (less efficient)"
6479
echo "💡 Install fswatch with: brew install fswatch"
65-
# Alternative: utilise find avec polling
80+
# Alternative: utilise find avec polling (récursif)
6681
while true; do
67-
CURRENT_HASH=$(find apps/api/src -name "*.py" -type f -exec md5 {} \; | md5)
82+
CURRENT_HASH=$(find apps/api/src -name "*.py" -type f -exec md5 {} \; 2>/dev/null | md5)
6883
if [ "$LAST_HASH" != "$CURRENT_HASH" ]; then
69-
if [ ! -z "$LAST_HASH" ]; then
70-
echo "[$(date '+%Y-%m-%d %H:%M:%S')] 📝 Change detected, restarting backend..."
71-
docker compose restart backend
72-
echo "[$(date '+%Y-%m-%d %H:%M:%S')] ✅ Backend restarted"
84+
if [ -n "$LAST_HASH" ]; then
85+
restart_backend
7386
fi
7487
LAST_HASH=$CURRENT_HASH
7588
fi

0 commit comments

Comments
 (0)