adds shutdown commands to makefile
This commit is contained in:
parent
4f8040e9db
commit
803554a410
64
Makefile
64
Makefile
@ -4,9 +4,8 @@
|
|||||||
# Define Python and pip executables inside virtual environment
|
# Define Python and pip executables inside virtual environment
|
||||||
PYTHON := venv/bin/python
|
PYTHON := venv/bin/python
|
||||||
PIP := venv/bin/pip
|
PIP := venv/bin/pip
|
||||||
|
|
||||||
# Celery worker command
|
|
||||||
CELERY := venv/bin/celery
|
CELERY := venv/bin/celery
|
||||||
|
FLASK := venv/bin/flask
|
||||||
|
|
||||||
# Default target that runs the application
|
# Default target that runs the application
|
||||||
all: run
|
all: run
|
||||||
@ -100,15 +99,15 @@ venv:
|
|||||||
|
|
||||||
# Run the application in debug mode
|
# Run the application in debug mode
|
||||||
run: venv
|
run: venv
|
||||||
venv/bin/flask --app scipaperloader --debug run
|
$(FLASK) --app scipaperloader --debug run
|
||||||
|
|
||||||
# Format code using Black and isort
|
# Format code using Black and isort
|
||||||
format:
|
format: venv
|
||||||
venv/bin/black .
|
venv/bin/black .
|
||||||
venv/bin/isort .
|
venv/bin/isort .
|
||||||
|
|
||||||
# Check if code meets formatting standards
|
# Check if code meets formatting standards
|
||||||
format-check:
|
format-check: venv
|
||||||
venv/bin/black --check .
|
venv/bin/black --check .
|
||||||
venv/bin/isort --check .
|
venv/bin/isort --check .
|
||||||
|
|
||||||
@ -116,15 +115,15 @@ format-check:
|
|||||||
reformat: format lint
|
reformat: format lint
|
||||||
|
|
||||||
# Check code for style issues using flake8
|
# Check code for style issues using flake8
|
||||||
lint:
|
lint: venv
|
||||||
venv/bin/flake8 .
|
venv/bin/flake8 .
|
||||||
|
|
||||||
# Run static type checking with mypy
|
# Run static type checking with mypy
|
||||||
mypy:
|
mypy: venv
|
||||||
venv/bin/mypy scipaperloader
|
venv/bin/mypy scipaperloader
|
||||||
|
|
||||||
# Run the test suite
|
# Run the test suite
|
||||||
test:
|
test: venv
|
||||||
venv/bin/pytest
|
venv/bin/pytest
|
||||||
|
|
||||||
# Build distribution package after running checks
|
# Build distribution package after running checks
|
||||||
@ -134,8 +133,12 @@ dist: format-check lint mypy test
|
|||||||
# Set up complete development environment
|
# Set up complete development environment
|
||||||
dev: clean venv
|
dev: clean venv
|
||||||
|
|
||||||
# Start Celery worker for processing tasks
|
# Start Celery worker - PURGE FIRST
|
||||||
celery: venv
|
celery: venv redis
|
||||||
|
@echo "Purging Celery task queue before starting worker..."
|
||||||
|
# Purge the queue forcefully. Ignore errors if queue is empty/unreachable initially.
|
||||||
|
@-$(CELERY) -A celery_worker:celery purge -f
|
||||||
|
@echo "Starting Celery worker..."
|
||||||
$(CELERY) -A celery_worker:celery worker --loglevel=info
|
$(CELERY) -A celery_worker:celery worker --loglevel=info
|
||||||
|
|
||||||
# Monitor Celery tasks with flower web interface
|
# Monitor Celery tasks with flower web interface
|
||||||
@ -144,14 +147,47 @@ celery-flower: venv
|
|||||||
$(CELERY) -A celery_worker:celery flower --port=5555
|
$(CELERY) -A celery_worker:celery flower --port=5555
|
||||||
|
|
||||||
# Run Celery beat scheduler for periodic tasks
|
# Run Celery beat scheduler for periodic tasks
|
||||||
celery-beat: venv
|
celery-beat: venv redis
|
||||||
$(CELERY) -A celery_worker:celery beat --loglevel=info
|
@echo "Starting Celery beat scheduler..."
|
||||||
|
# Ensure celerybeat-schedule file is removed for clean start if needed
|
||||||
|
@-rm -f celerybeat-schedule.db
|
||||||
|
$(CELERY) -A celery_worker:celery beat --loglevel=info --scheduler django_celery_beat.schedulers:DatabaseScheduler
|
||||||
|
|
||||||
# Check if Redis is running, start if needed
|
# Check if Redis is running, start if needed
|
||||||
redis:
|
redis:
|
||||||
@redis-cli ping > /dev/null 2>&1 || (echo "Starting Redis server..." && redis-server --daemonize yes)
|
@if ! redis-cli ping > /dev/null 2>&1; then \
|
||||||
|
echo "Starting Redis server..."; \
|
||||||
|
redis-server --daemonize yes; \
|
||||||
|
sleep 1; \
|
||||||
|
else \
|
||||||
|
echo "Redis is already running."; \
|
||||||
|
fi
|
||||||
|
|
||||||
# Run complete application stack (Flask app + Celery worker + Redis + Beat scheduler)
|
# Run complete application stack (Flask app + Celery worker + Redis + Beat scheduler)
|
||||||
run-all: redis
|
run-all: redis
|
||||||
@echo "Starting Flask, Celery worker and Beat scheduler..."
|
@echo "Starting Flask, Celery worker and Beat scheduler..."
|
||||||
@$(MAKE) -j3 run celery celery-beat
|
# Run them in parallel. Ctrl+C will send SIGINT to make, which propagates.
|
||||||
|
# Use trap to attempt cleanup, but primary cleanup is purge on next start.
|
||||||
|
@trap '$(MAKE) stop-all;' INT TERM; \
|
||||||
|
$(MAKE) -j3 run celery celery-beat & wait
|
||||||
|
|
||||||
|
# Stop running Celery worker and beat gracefully
|
||||||
|
stop-celery:
|
||||||
|
@echo "Attempting graceful shutdown of Celery worker and beat..."
|
||||||
|
@-pkill -TERM -f "celery -A celery_worker:celery worker" || echo "Worker not found or already stopped."
|
||||||
|
@-pkill -TERM -f "celery -A celery_worker:celery beat" || echo "Beat not found or already stopped."
|
||||||
|
@sleep 1 # Give processes a moment to terminate
|
||||||
|
@echo "Purging remaining tasks from Celery queue..."
|
||||||
|
@-$(CELERY) -A celery_worker:celery purge -f || echo "Purge failed or queue empty."
|
||||||
|
|
||||||
|
# Stop Flask development server
|
||||||
|
stop-flask:
|
||||||
|
@echo "Attempting shutdown of Flask development server..."
|
||||||
|
@-pkill -TERM -f "flask --app scipaperloader --debug run" || echo "Flask server not found or already stopped."
|
||||||
|
|
||||||
|
# Stop all components potentially started by run-all
|
||||||
|
stop-all: stop-celery stop-flask
|
||||||
|
@echo "All components stopped."
|
||||||
|
|
||||||
|
# Default target
|
||||||
|
all: run
|
||||||
|
Loading…
x
Reference in New Issue
Block a user