3rd_fix download

This commit is contained in:
beabigegg
2025-09-02 16:47:16 +08:00
parent b11a8272c4
commit e6e5332705
24 changed files with 1671 additions and 167 deletions

82
start_celery.py Normal file
View File

@@ -0,0 +1,82 @@
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
啟動 Celery Worker 的輔助腳本
"""
import sys
import os
# Fix encoding for Windows console
if sys.stdout.encoding != 'utf-8':
sys.stdout.reconfigure(encoding='utf-8')
if sys.stderr.encoding != 'utf-8':
sys.stderr.reconfigure(encoding='utf-8')
# 將 app 目錄加入 sys.path
sys.path.insert(0, os.path.join(os.path.dirname(__file__), 'app'))
def start_celery_worker():
"""啟動 Celery Worker"""
print("正在啟動 Celery Worker...")
# 設置環境變數
os.environ.setdefault('FLASK_ENV', 'development')
# 導入應用
from app import create_app
app = create_app()
print(f"Flask 應用已創建: {app}")
print(f"Celery 實例: {app.celery}")
# 啟動 Celery Worker
# Windows 需要使用 --pool=solo 參數
print("正在啟動 Celery WorkerWindows 模式)...")
# 使用 subprocess 啟動 celery worker
import subprocess
cmd = [
sys.executable, '-m', 'celery',
'-A', 'app.celery',
'worker',
'--loglevel=info',
'--pool=solo'
]
print(f"執行命令: {' '.join(cmd)}")
try:
# 切換到正確的目錄
os.chdir(os.path.dirname(__file__))
# 啟動進程
process = subprocess.Popen(
cmd,
stdout=subprocess.PIPE,
stderr=subprocess.STDOUT,
text=True,
encoding='utf-8',
bufsize=1,
universal_newlines=True
)
print("Celery Worker 已啟動PID:", process.pid)
print("正在監控輸出...")
# 即時顯示輸出
for line in iter(process.stdout.readline, ''):
print(line.rstrip())
except KeyboardInterrupt:
print("\n收到中斷信號,正在停止 Celery Worker...")
if 'process' in locals():
process.terminate()
sys.exit(0)
except Exception as e:
print(f"啟動 Celery Worker 時發生錯誤: {e}")
import traceback
traceback.print_exc()
if __name__ == "__main__":
start_celery_worker()