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