mirror of
https://github.com/Monadical-SAS/reflector.git
synced 2025-12-20 20:29:06 +00:00
Merge pull request #331 from Monadical-SAS/feat-healthcheck
Add healthcheck for worker
This commit is contained in:
14
README.md
14
README.md
@@ -133,17 +133,25 @@ TRANSLATE_URL=https://monadical-sas--reflector-translator-web.modal.run
|
|||||||
ZEPHYR_LLM_URL=https://monadical-sas--reflector-llm-zephyr-web.modal.run
|
ZEPHYR_LLM_URL=https://monadical-sas--reflector-llm-zephyr-web.modal.run
|
||||||
```
|
```
|
||||||
|
|
||||||
### Start the project
|
### Start the API/Backend
|
||||||
|
|
||||||
Use:
|
Start the API server:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
poetry run python3 -m reflector.app
|
poetry run python3 -m reflector.app
|
||||||
```
|
```
|
||||||
|
|
||||||
And start the background worker
|
Start the background worker:
|
||||||
|
|
||||||
|
```bash
|
||||||
celery -A reflector.worker.app worker --loglevel=info
|
celery -A reflector.worker.app worker --loglevel=info
|
||||||
|
```
|
||||||
|
|
||||||
|
For crontab (only healthcheck for now), start the celery beat:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
celery -A reflector.worker.app beat
|
||||||
|
```
|
||||||
|
|
||||||
#### Using docker
|
#### Using docker
|
||||||
|
|
||||||
|
|||||||
@@ -128,5 +128,8 @@ class Settings(BaseSettings):
|
|||||||
# Profiling
|
# Profiling
|
||||||
PROFILING: bool = False
|
PROFILING: bool = False
|
||||||
|
|
||||||
|
# Healthcheck
|
||||||
|
HEALTHCHECK_URL: str | None = None
|
||||||
|
|
||||||
|
|
||||||
settings = Settings()
|
settings = Settings()
|
||||||
|
|||||||
@@ -1,6 +1,8 @@
|
|||||||
|
import structlog
|
||||||
from celery import Celery
|
from celery import Celery
|
||||||
from reflector.settings import settings
|
from reflector.settings import settings
|
||||||
|
|
||||||
|
logger = structlog.get_logger(__name__)
|
||||||
app = Celery(__name__)
|
app = Celery(__name__)
|
||||||
app.conf.broker_url = settings.CELERY_BROKER_URL
|
app.conf.broker_url = settings.CELERY_BROKER_URL
|
||||||
app.conf.result_backend = settings.CELERY_RESULT_BACKEND
|
app.conf.result_backend = settings.CELERY_RESULT_BACKEND
|
||||||
@@ -8,5 +10,18 @@ app.conf.broker_connection_retry_on_startup = True
|
|||||||
app.autodiscover_tasks(
|
app.autodiscover_tasks(
|
||||||
[
|
[
|
||||||
"reflector.pipelines.main_live_pipeline",
|
"reflector.pipelines.main_live_pipeline",
|
||||||
|
"reflector.worker.healthcheck",
|
||||||
]
|
]
|
||||||
)
|
)
|
||||||
|
|
||||||
|
# crontab
|
||||||
|
app.conf.beat_schedule = {}
|
||||||
|
|
||||||
|
if settings.HEALTHCHECK_URL:
|
||||||
|
app.conf.beat_schedule["healthcheck_ping"] = {
|
||||||
|
"task": "reflector.worker.healthcheck.healthcheck_ping",
|
||||||
|
"schedule": 60.0 * 10,
|
||||||
|
}
|
||||||
|
logger.info("Healthcheck enabled", url=settings.HEALTHCHECK_URL)
|
||||||
|
else:
|
||||||
|
logger.warning("Healthcheck disabled, no url configured")
|
||||||
|
|||||||
18
server/reflector/worker/healthcheck.py
Normal file
18
server/reflector/worker/healthcheck.py
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
import httpx
|
||||||
|
import structlog
|
||||||
|
from celery import shared_task
|
||||||
|
from reflector.settings import settings
|
||||||
|
|
||||||
|
logger = structlog.get_logger(__name__)
|
||||||
|
|
||||||
|
|
||||||
|
@shared_task
|
||||||
|
def healthcheck_ping():
|
||||||
|
url = settings.HEALTHCHECK_URL
|
||||||
|
if not url:
|
||||||
|
return
|
||||||
|
try:
|
||||||
|
print("pinging healthcheck url", url)
|
||||||
|
httpx.get(url, timeout=10)
|
||||||
|
except Exception as e:
|
||||||
|
logger.error("healthcheck_ping", error=str(e))
|
||||||
@@ -9,6 +9,8 @@ if [ "${ENTRYPOINT}" = "server" ]; then
|
|||||||
python -m reflector.app
|
python -m reflector.app
|
||||||
elif [ "${ENTRYPOINT}" = "worker" ]; then
|
elif [ "${ENTRYPOINT}" = "worker" ]; then
|
||||||
celery -A reflector.worker.app worker --loglevel=info
|
celery -A reflector.worker.app worker --loglevel=info
|
||||||
|
elif [ "${ENTRYPOINT}" = "beat" ]; then
|
||||||
|
celery -A reflector.worker.app beat --loglevel=info
|
||||||
else
|
else
|
||||||
echo "Unknown command"
|
echo "Unknown command"
|
||||||
fi
|
fi
|
||||||
|
|||||||
Reference in New Issue
Block a user