Lin / start_celery.py
Zelyanoth's picture
fff
25f22bf
raw
history blame
1.9 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.celery 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.celery_beat beat --loglevel=info")
def start_celery_flower():
"""Start the Celery flower monitoring tool."""
print("Starting Celery flower...")
os.system("celery -A backend.celery_app.celery 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.celery", "worker", "--loglevel=info"
])
beat_process = subprocess.Popen([
"celery", "-A", "backend.celery_beat_config.celery_beat", "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)