Lin / start_celery.py
Zelyanoth's picture
feat: Enhance security and configuration management
e3d8d4f
raw
history blame
1.84 kB
#!/usr/bin/env python
"""
Script to start Celery components for the Lin application.
This can be used to start Celery worker and beat scheduler separately.
"""
import os
import sys
import subprocess
def start_celery_worker():
"""Start the Celery worker."""
print("Starting Celery worker...")
os.system("celery -A backend.celery_app worker --loglevel=info")
def start_celery_beat():
"""Start the Celery beat scheduler."""
print("Starting Celery beat scheduler...")
os.system("celery -A backend.celery_beat_config beat --loglevel=info")
def start_celery_flower():
"""Start the Celery flower monitoring tool."""
print("Starting Celery flower...")
os.system("celery -A backend.celery_app flower")
if __name__ == "__main__":
if len(sys.argv) < 2:
print("Usage: python start_celery.py [worker|beat|flower|all]")
sys.exit(1)
command = sys.argv[1]
if command == "worker":
start_celery_worker()
elif command == "beat":
start_celery_beat()
elif command == "flower":
start_celery_flower()
elif command == "all":
# Start worker and beat in background processes
worker_process = subprocess.Popen([
"celery", "-A", "backend.celery_app", "worker", "--loglevel=info"
])
beat_process = subprocess.Popen([
"celery", "-A", "backend.celery_beat_config", "beat", "--loglevel=info"
])
try:
worker_process.wait()
beat_process.wait()
except KeyboardInterrupt:
worker_process.terminate()
beat_process.terminate()
worker_process.wait()
beat_process.wait()
else:
print(f"Unknown command: {command}")
print("Usage: python start_celery.py [worker|beat|flower|all]")
sys.exit(1)