- backend/start_celery.py +18 -6
- start_app.py +14 -7
backend/start_celery.py
CHANGED
|
@@ -32,9 +32,15 @@ def check_redis():
|
|
| 32 |
def start_worker():
|
| 33 |
"""Start Celery worker."""
|
| 34 |
print("Starting Celery worker...")
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 35 |
cmd = [
|
| 36 |
sys.executable, "-m", "celery",
|
| 37 |
-
"-A", "celery_config:celery_app",
|
| 38 |
"worker",
|
| 39 |
"--loglevel=info",
|
| 40 |
"--pool=solo",
|
|
@@ -42,27 +48,33 @@ def start_worker():
|
|
| 42 |
]
|
| 43 |
|
| 44 |
if platform.system() == "Windows":
|
| 45 |
-
subprocess.Popen(cmd, cwd=backend_dir)
|
| 46 |
else:
|
| 47 |
-
subprocess.Popen(cmd, cwd=backend_dir)
|
| 48 |
|
| 49 |
print("Celery worker started")
|
| 50 |
|
| 51 |
def start_beat():
|
| 52 |
"""Start Celery Beat scheduler."""
|
| 53 |
print("Starting Celery Beat scheduler...")
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 54 |
cmd = [
|
| 55 |
sys.executable, "-m", "celery",
|
| 56 |
-
"-A", "celery_config:celery_app",
|
| 57 |
"beat",
|
| 58 |
"--loglevel=info",
|
| 59 |
"--scheduler=django_celery_beat.schedulers:DatabaseScheduler"
|
| 60 |
]
|
| 61 |
|
| 62 |
if platform.system() == "Windows":
|
| 63 |
-
subprocess.Popen(cmd, cwd=backend_dir)
|
| 64 |
else:
|
| 65 |
-
subprocess.Popen(cmd, cwd=backend_dir)
|
| 66 |
|
| 67 |
print("Celery Beat scheduler started")
|
| 68 |
|
|
|
|
| 32 |
def start_worker():
|
| 33 |
"""Start Celery worker."""
|
| 34 |
print("Starting Celery worker...")
|
| 35 |
+
# Add project root to PYTHONPATH
|
| 36 |
+
project_root = backend_dir.parent.resolve()
|
| 37 |
+
env = os.environ.copy()
|
| 38 |
+
current_pythonpath = env.get('PYTHONPATH', '')
|
| 39 |
+
env['PYTHONPATH'] = str(project_root) + os.pathsep + current_pythonpath if current_pythonpath else str(project_root)
|
| 40 |
+
|
| 41 |
cmd = [
|
| 42 |
sys.executable, "-m", "celery",
|
| 43 |
+
"-A", "celery_config:celery_app",
|
| 44 |
"worker",
|
| 45 |
"--loglevel=info",
|
| 46 |
"--pool=solo",
|
|
|
|
| 48 |
]
|
| 49 |
|
| 50 |
if platform.system() == "Windows":
|
| 51 |
+
subprocess.Popen(cmd, cwd=backend_dir, env=env)
|
| 52 |
else:
|
| 53 |
+
subprocess.Popen(cmd, cwd=backend_dir, env=env)
|
| 54 |
|
| 55 |
print("Celery worker started")
|
| 56 |
|
| 57 |
def start_beat():
|
| 58 |
"""Start Celery Beat scheduler."""
|
| 59 |
print("Starting Celery Beat scheduler...")
|
| 60 |
+
# Add project root to PYTHONPATH
|
| 61 |
+
project_root = backend_dir.parent.resolve()
|
| 62 |
+
env = os.environ.copy()
|
| 63 |
+
current_pythonpath = env.get('PYTHONPATH', '')
|
| 64 |
+
env['PYTHONPATH'] = str(project_root) + os.pathsep + current_pythonpath if current_pythonpath else str(project_root)
|
| 65 |
+
|
| 66 |
cmd = [
|
| 67 |
sys.executable, "-m", "celery",
|
| 68 |
+
"-A", "celery_config:celery_app",
|
| 69 |
"beat",
|
| 70 |
"--loglevel=info",
|
| 71 |
"--scheduler=django_celery_beat.schedulers:DatabaseScheduler"
|
| 72 |
]
|
| 73 |
|
| 74 |
if platform.system() == "Windows":
|
| 75 |
+
subprocess.Popen(cmd, cwd=backend_dir, env=env)
|
| 76 |
else:
|
| 77 |
+
subprocess.Popen(cmd, cwd=backend_dir, env=env)
|
| 78 |
|
| 79 |
print("Celery Beat scheduler started")
|
| 80 |
|
start_app.py
CHANGED
|
@@ -29,12 +29,19 @@ def start_celery_components():
|
|
| 29 |
"""Start Celery worker and beat scheduler in background processes."""
|
| 30 |
print("Starting Celery components...")
|
| 31 |
|
| 32 |
-
|
|
|
|
| 33 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 34 |
# Start Celery worker
|
| 35 |
worker_cmd = [
|
| 36 |
sys.executable, "-m", "celery",
|
| 37 |
-
"-A", "celery_config:celery_app",
|
| 38 |
"worker",
|
| 39 |
"--loglevel=info",
|
| 40 |
"--pool=solo",
|
|
@@ -44,7 +51,7 @@ def start_celery_components():
|
|
| 44 |
# Start Celery beat
|
| 45 |
beat_cmd = [
|
| 46 |
sys.executable, "-m", "celery",
|
| 47 |
-
"-A", "celery_config:celery_app",
|
| 48 |
"beat",
|
| 49 |
"--loglevel=info",
|
| 50 |
"--scheduler=django_celery_beat.schedulers:DatabaseScheduler"
|
|
@@ -52,17 +59,17 @@ def start_celery_components():
|
|
| 52 |
|
| 53 |
if platform.system() == "Windows":
|
| 54 |
# Windows: Use subprocess to start background processes with visible logs
|
| 55 |
-
subprocess.Popen(worker_cmd, cwd=backend_dir,
|
| 56 |
stdout=sys.stdout, stderr=sys.stderr,
|
| 57 |
creationflags=subprocess.CREATE_NEW_PROCESS_GROUP)
|
| 58 |
-
subprocess.Popen(beat_cmd, cwd=backend_dir,
|
| 59 |
stdout=sys.stdout, stderr=sys.stderr,
|
| 60 |
creationflags=subprocess.CREATE_NEW_PROCESS_GROUP)
|
| 61 |
else:
|
| 62 |
# Linux/Mac: Use subprocess with visible logs
|
| 63 |
-
subprocess.Popen(worker_cmd, cwd=backend_dir,
|
| 64 |
stdout=sys.stdout, stderr=sys.stderr)
|
| 65 |
-
subprocess.Popen(beat_cmd, cwd=backend_dir,
|
| 66 |
stdout=sys.stdout, stderr=sys.stderr)
|
| 67 |
|
| 68 |
print("Celery worker and beat scheduler started in background")
|
|
|
|
| 29 |
"""Start Celery worker and beat scheduler in background processes."""
|
| 30 |
print("Starting Celery components...")
|
| 31 |
|
| 32 |
+
project_root = Path(__file__).parent.resolve() # Get the project root directory
|
| 33 |
+
backend_dir = project_root / "backend"
|
| 34 |
|
| 35 |
+
# Prepare the environment with updated PYTHONPATH
|
| 36 |
+
env = os.environ.copy()
|
| 37 |
+
# Prepend the project root to PYTHONPATH so 'backend' package can be found
|
| 38 |
+
current_pythonpath = env.get('PYTHONPATH', '')
|
| 39 |
+
env['PYTHONPATH'] = str(project_root) + os.pathsep + current_pythonpath if current_pythonpath else str(project_root)
|
| 40 |
+
|
| 41 |
# Start Celery worker
|
| 42 |
worker_cmd = [
|
| 43 |
sys.executable, "-m", "celery",
|
| 44 |
+
"-A", "celery_config:celery_app",
|
| 45 |
"worker",
|
| 46 |
"--loglevel=info",
|
| 47 |
"--pool=solo",
|
|
|
|
| 51 |
# Start Celery beat
|
| 52 |
beat_cmd = [
|
| 53 |
sys.executable, "-m", "celery",
|
| 54 |
+
"-A", "celery_config:celery_app",
|
| 55 |
"beat",
|
| 56 |
"--loglevel=info",
|
| 57 |
"--scheduler=django_celery_beat.schedulers:DatabaseScheduler"
|
|
|
|
| 59 |
|
| 60 |
if platform.system() == "Windows":
|
| 61 |
# Windows: Use subprocess to start background processes with visible logs
|
| 62 |
+
subprocess.Popen(worker_cmd, cwd=backend_dir, env=env, # Pass the modified env
|
| 63 |
stdout=sys.stdout, stderr=sys.stderr,
|
| 64 |
creationflags=subprocess.CREATE_NEW_PROCESS_GROUP)
|
| 65 |
+
subprocess.Popen(beat_cmd, cwd=backend_dir, env=env, # Pass the modified env
|
| 66 |
stdout=sys.stdout, stderr=sys.stderr,
|
| 67 |
creationflags=subprocess.CREATE_NEW_PROCESS_GROUP)
|
| 68 |
else:
|
| 69 |
# Linux/Mac: Use subprocess with visible logs
|
| 70 |
+
subprocess.Popen(worker_cmd, cwd=backend_dir, env=env, # Pass the modified env
|
| 71 |
stdout=sys.stdout, stderr=sys.stderr)
|
| 72 |
+
subprocess.Popen(beat_cmd, cwd=backend_dir, env=env, # Pass the modified env
|
| 73 |
stdout=sys.stdout, stderr=sys.stderr)
|
| 74 |
|
| 75 |
print("Celery worker and beat scheduler started in background")
|