Skip to content

Commit 872d90a

Browse files
committed
celery interface fix.
1 parent b38f784 commit 872d90a

File tree

8 files changed

+67
-4
lines changed

8 files changed

+67
-4
lines changed

.env

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,9 @@ MONGO_DB=socialmediadb
4747
RABBITMQ_USER=rabbitmquser
4848
RABBITMQ_PASSWORD=rabbitmqpassword
4949

50+
# Celery
51+
CELERY_BROKER=amqp://rabbitmquser:rabbitmqpassword@rabbitmq:5672//
52+
5053
# Add for local development when not using Docker
5154
# These will be automatically set in Docker based on service names
5255
# MONGO_SERVER=localhost

backend/Dockerfile

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,4 +40,7 @@ COPY ./app /app/app
4040
RUN --mount=type=cache,target=/root/.cache/uv \
4141
uv sync
4242

43+
# Install all required dependencies directly
44+
RUN pip install celery==5.3.0 flower==1.2.0 redis==4.6.0 pydantic>=2.0 pydantic-settings>=2.0 fastapi>=0.114.2 pymongo>=4.5.0 motor>=3.2.0
45+
4346
CMD ["fastapi", "run", "--workers", "4", "app/main.py"]

backend/Dockerfile.celery

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
FROM python:3.10
2+
3+
ENV PYTHONUNBUFFERED=1
4+
ENV PYTHONPATH=/app
5+
6+
WORKDIR /app/
7+
8+
COPY ./pyproject.toml /app/
9+
COPY ./app /app/app
10+
11+
# Install all required dependencies directly
12+
RUN pip install celery==5.3.0 flower==1.2.0 redis==4.6.0 pydantic>=2.0 pydantic-settings>=2.0 fastapi>=0.114.2 pymongo>=4.5.0 motor>=3.2.0 pika>=1.3.2 email-validator>=2.1.0 python-multipart>=0.0.7 passlib[bcrypt]>=1.7.4 bcrypt==4.0.1 pyjwt>=2.8.0 sqlmodel>=0.0.21 psycopg[binary]>=3.1.13 alembic>=1.12.1 tenacity>=8.2.3
13+
14+
CMD ["celery", "-A", "app.tasks.celery_app", "worker", "--loglevel=info"]

backend/app/core/config.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -81,6 +81,9 @@ def SQLALCHEMY_DATABASE_URI(self) -> PostgresDsn:
8181
EMAILS_FROM_EMAIL: EmailStr | None = None
8282
EMAILS_FROM_NAME: EmailStr | None = None
8383

84+
# Celery settings
85+
CELERY_BROKER: str = "amqp://guest:guest@localhost:5672//"
86+
8487
@model_validator(mode="after")
8588
def _set_default_emails_from(self) -> Self:
8689
if not self.EMAILS_FROM_NAME:

backend/app/db/session.py

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
11
from typing import Generator
2+
import os
3+
from pymongo import MongoClient
24

35
from sqlmodel import Session, create_engine
46

@@ -11,4 +13,16 @@
1113
def get_session() -> Generator[Session, None, None]:
1214
"""Get a SQLModel session for PostgreSQL database operations."""
1315
with Session(engine) as session:
14-
yield session
16+
yield session
17+
18+
# MongoDB Connection
19+
mongodb_server = os.environ.get("MONGODB_SERVER", "localhost")
20+
mongodb_port = int(os.environ.get("MONGODB_PORT", "27017"))
21+
mongodb_user = os.environ.get("MONGODB_USER", "mongo")
22+
mongodb_password = os.environ.get("MONGODB_PASSWORD", "mongo")
23+
mongodb_database = os.environ.get("MONGODB_DATABASE", "political_analysis")
24+
25+
# Create MongoDB client
26+
mongodb_uri = f"mongodb://{mongodb_user}:{mongodb_password}@{mongodb_server}:{mongodb_port}/{mongodb_database}"
27+
mongodb_client = MongoClient(mongodb_uri)
28+
mongodb = mongodb_client[mongodb_database]

backend/app/tasks/celery_app.py

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,23 @@
11
from celery import Celery
2+
import os
23

34
from app.core.config import settings
45

6+
# Get Redis connection details from environment variables
7+
redis_server = os.environ.get("REDIS_SERVER", "localhost")
8+
redis_port = os.environ.get("REDIS_PORT", "6379")
9+
redis_url = f"redis://{redis_server}:{redis_port}/0"
10+
11+
# Get RabbitMQ connection details from environment variables
12+
rabbitmq_user = os.environ.get("RABBITMQ_USER", "guest")
13+
rabbitmq_password = os.environ.get("RABBITMQ_PASSWORD", "guest")
14+
rabbitmq_server = os.environ.get("RABBITMQ_SERVER", "localhost")
15+
broker_url = f"amqp://{rabbitmq_user}:{rabbitmq_password}@{rabbitmq_server}:5672//"
16+
517
celery_app = Celery(
618
"worker",
7-
broker=settings.CELERY_BROKER,
8-
backend=settings.CELERY_BROKER,
19+
broker=broker_url,
20+
backend=redis_url,
921
)
1022

1123
# Configure Celery

backend/celerybeat-schedule

16 KB
Binary file not shown.

docker-compose.override.yml

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -188,6 +188,7 @@ services:
188188
celery-worker:
189189
build:
190190
context: ./backend
191+
dockerfile: Dockerfile.celery
191192
restart: "no"
192193
command: celery -A app.tasks.celery_app worker --loglevel=info
193194
volumes:
@@ -204,6 +205,7 @@ services:
204205
RABBITMQ_USER: ${RABBITMQ_USER:-guest}
205206
RABBITMQ_PASSWORD: ${RABBITMQ_PASSWORD:-guest}
206207
KAFKA_BOOTSTRAP_SERVERS: "kafka:9093,localhost:9092"
208+
CELERY_BROKER: "amqp://${RABBITMQ_USER:-guest}:${RABBITMQ_PASSWORD:-guest}@rabbitmq:5672//"
207209
depends_on:
208210
- backend
209211
- redis
@@ -213,6 +215,7 @@ services:
213215
celery-beat:
214216
build:
215217
context: ./backend
218+
dockerfile: Dockerfile.celery
216219
restart: "no"
217220
command: celery -A app.tasks.celery_app beat --loglevel=info
218221
volumes:
@@ -229,14 +232,16 @@ services:
229232
RABBITMQ_USER: ${RABBITMQ_USER:-guest}
230233
RABBITMQ_PASSWORD: ${RABBITMQ_PASSWORD:-guest}
231234
KAFKA_BOOTSTRAP_SERVERS: "kafka:9093,localhost:9092"
235+
CELERY_BROKER: "amqp://${RABBITMQ_USER:-guest}:${RABBITMQ_PASSWORD:-guest}@rabbitmq:5672//"
232236
depends_on:
233237
- celery-worker
234238

235239
celery-flower:
236240
build:
237241
context: ./backend
242+
dockerfile: Dockerfile.celery
238243
restart: "no"
239-
command: celery -A app.tasks.celery_app flower --port=5555
244+
command: celery flower --broker=amqp://${RABBITMQ_USER:-guest}:${RABBITMQ_PASSWORD:-guest}@rabbitmq:5672// --port=5555
240245
ports:
241246
- "5555:5555"
242247
environment:
@@ -250,6 +255,15 @@ services:
250255
RABBITMQ_SERVER: "rabbitmq"
251256
RABBITMQ_USER: ${RABBITMQ_USER:-guest}
252257
RABBITMQ_PASSWORD: ${RABBITMQ_PASSWORD:-guest}
258+
CELERY_BROKER: "amqp://${RABBITMQ_USER:-guest}:${RABBITMQ_PASSWORD:-guest}@rabbitmq:5672//"
259+
PROJECT_NAME: "Political Social Media Analysis Platform"
260+
POSTGRES_SERVER: "db"
261+
POSTGRES_PORT: "5432"
262+
POSTGRES_DB: "app"
263+
POSTGRES_USER: "postgres"
264+
POSTGRES_PASSWORD: "changethis"
265+
FIRST_SUPERUSER: "[email protected]"
266+
FIRST_SUPERUSER_PASSWORD: "password"
253267
depends_on:
254268
- celery-worker
255269

0 commit comments

Comments
 (0)