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