|
10 | 10 | import os |
11 | 11 |
|
12 | 12 | from django.core.wsgi import get_wsgi_application |
| 13 | +# |
| 14 | +# # 检查是否启用 memray 分析 |
| 15 | +# if os.environ.get('ENABLE_MEMRAY') == '1': |
| 16 | +# import memray |
| 17 | +# import atexit |
| 18 | +# |
| 19 | +# # 为每个进程创建单独的追踪文件 |
| 20 | +# pid = os.getpid() |
| 21 | +# output_file = f"memray_output_{pid}.bin" |
| 22 | +# |
| 23 | +# tracker = memray.Tracker(output_file) |
| 24 | +# tracker.__enter__() |
| 25 | +# |
| 26 | +# |
| 27 | +# def cleanup(): |
| 28 | +# tracker.__exit__(None, None, None) |
| 29 | +# |
| 30 | +# |
| 31 | +# atexit.register(cleanup) |
13 | 32 |
|
14 | 33 | os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'maxkb.settings') |
15 | 34 |
|
16 | 35 | application = get_wsgi_application() |
17 | 36 |
|
18 | 37 |
|
19 | | - |
20 | | -def post_handler(): |
| 38 | +# ----------------------------- |
| 39 | +# 全局初始化,只希望在 master preload 阶段执行一次 |
| 40 | +# ----------------------------- |
| 41 | +def preloaded_init(): |
21 | 42 | from common.database_model_manage.database_model_manage import DatabaseModelManage |
22 | 43 | from common import event |
| 44 | + from common.utils.logger import maxkb_logger |
23 | 45 |
|
24 | 46 | event.run() |
25 | 47 | DatabaseModelManage.init() |
26 | 48 |
|
| 49 | + if os.environ.get("ENABLE_SCHEDULER") == "1": |
| 50 | + from common import job |
| 51 | + |
| 52 | + job.run() |
27 | 53 |
|
28 | | -def post_scheduler_handler(): |
29 | | - from common import job |
| 54 | + maxkb_logger.info("✅ preloaded_init: master 初始化完成,内存将被 worker 共享") |
30 | 55 |
|
31 | | - job.run() |
32 | 56 |
|
33 | | -# 启动后处理函数 |
34 | | -post_handler() |
| 57 | +# Gunicorn preload 阶段会执行此逻辑 |
| 58 | +if os.environ.get("GUNICORN_PRELOAD", "1") == "1": |
| 59 | + try: |
| 60 | + preloaded_init() |
| 61 | + except Exception as e: |
| 62 | + import traceback |
| 63 | + from common.utils.logger import maxkb_logger |
35 | 64 |
|
36 | | -# 仅在scheduler中启动定时任务,dev local_model celery 不需要 |
37 | | -if os.environ.get('ENABLE_SCHEDULER') == '1': |
38 | | - post_scheduler_handler() |
| 65 | + maxkb_logger.info("⚠️ preload 初始化失败:", e) |
| 66 | + traceback.print_exc() |
0 commit comments