refactor: deploy-lucee + deploy-check — два независимых набора кода ВМ
This commit is contained in:
@@ -1,38 +0,0 @@
|
||||
"""
|
||||
classify_worker.py — Фоновый процесс классификации (Фаза async classify).
|
||||
|
||||
Запускается через subprocess.Popen из convert_server.py.
|
||||
Принимает batch_id как аргумент командной строки.
|
||||
Не зависит от HTTP-сервера — свои коннекты к БД, своя память.
|
||||
|
||||
ЗАЧЕМ: threading.Thread внутри HTTP-процесса делит коннекты к БД
|
||||
с HTTP-потоком. При 50+ файлах ThreadPoolExecutor(4) + HTTP-поток
|
||||
исчерпывают пул коннектов → сервер не отвечает → 502.
|
||||
|
||||
subprocess.Popen создаёт отдельный питон-процесс со своей памятью
|
||||
и своими коннектами. HTTP-сервер продолжает отвечать на batch-progress.
|
||||
Процесс живёт пока classify не завершится, потом умирает.
|
||||
"""
|
||||
|
||||
import sys, os
|
||||
sys.path.insert(0, os.path.dirname(__file__))
|
||||
|
||||
from services.classify import classify_batch
|
||||
|
||||
if __name__ == "__main__":
|
||||
if len(sys.argv) < 2:
|
||||
print("Usage: python3 classify_worker.py <batch_id>", file=sys.stderr)
|
||||
sys.exit(1)
|
||||
|
||||
batch_id = sys.argv[1]
|
||||
lock_path = f"/tmp/classify_{batch_id}.lock"
|
||||
try:
|
||||
result = classify_batch(batch_id)
|
||||
print(f"classify_worker DONE: {result}")
|
||||
except Exception as e:
|
||||
print(f"classify_worker FAILED: {e}", file=sys.stderr)
|
||||
sys.exit(1)
|
||||
finally:
|
||||
# Убрать lock-файл в любом случае
|
||||
if os.path.exists(lock_path):
|
||||
os.remove(lock_path)
|
||||
Reference in New Issue
Block a user