Files
marketscanner/backend/app/workers/celery_app.py
mindesbunister 074787f067 Initial project structure: MarketScanner - Fear-to-Fortune Trading Intelligence
Features:
- FastAPI backend with stocks, news, signals, watchlist, analytics endpoints
- React frontend with TailwindCSS dark mode trading dashboard
- Celery workers for news fetching, sentiment analysis, pattern detection
- TimescaleDB schema for time-series stock data
- Docker Compose setup for all services
- OpenAI integration for sentiment analysis
2026-01-08 14:15:51 +01:00

70 lines
2.0 KiB
Python

"""
Celery Application Configuration
"""
from celery import Celery
from celery.schedules import crontab
from app.core.config import settings
# Create Celery app
celery_app = Celery(
"marketscanner",
broker=settings.RABBITMQ_URL,
backend=settings.REDIS_URL,
include=[
"app.workers.tasks.news_tasks",
"app.workers.tasks.stock_tasks",
"app.workers.tasks.sentiment_tasks",
"app.workers.tasks.pattern_tasks",
"app.workers.tasks.alert_tasks",
],
)
# Celery configuration
celery_app.conf.update(
task_serializer="json",
accept_content=["json"],
result_serializer="json",
timezone="UTC",
enable_utc=True,
task_track_started=True,
task_time_limit=300, # 5 minutes
worker_prefetch_multiplier=1,
worker_concurrency=4,
)
# Beat schedule (periodic tasks)
celery_app.conf.beat_schedule = {
# Fetch news every 5 minutes
"fetch-news-every-5-minutes": {
"task": "app.workers.tasks.news_tasks.fetch_all_news",
"schedule": settings.NEWS_SCAN_INTERVAL,
},
# Update stock prices every minute
"update-prices-every-minute": {
"task": "app.workers.tasks.stock_tasks.update_stock_prices",
"schedule": settings.STOCK_PRICE_INTERVAL,
},
# Process unanalyzed news every 2 minutes
"analyze-sentiment-every-2-minutes": {
"task": "app.workers.tasks.sentiment_tasks.process_unanalyzed_news",
"schedule": 120,
},
# Detect panic events every 5 minutes
"detect-panic-every-5-minutes": {
"task": "app.workers.tasks.pattern_tasks.detect_panic_events",
"schedule": 300,
},
# Generate signals every 10 minutes
"generate-signals-every-10-minutes": {
"task": "app.workers.tasks.pattern_tasks.generate_buy_signals",
"schedule": 600,
},
# Clean old data daily at midnight
"cleanup-daily": {
"task": "app.workers.tasks.news_tasks.cleanup_old_news",
"schedule": crontab(hour=0, minute=0),
},
}