|
|
|
""" |
|
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": |
|
|
|
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) |