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