Files
kami_apple_exchage/backend/run.py
danial 8ad2a5366a refactor(backend): 将Celery替换为Arq进行协程任务处理
本次提交将后端的任务队列系统从Celery迁移到了Arq,以支持基于协程的任务处理。主要改动包括:
- 更新文档和配置文件,反映架构变化。
- 修改健康检查和服务初始化逻辑,以适应Arq的使用。
- 移除与Celery相关的代码,并添加Arq任务定义和调度器。
- 更新Dockerfile和相关脚本,确保Arq worker能够正确运行。
- 调整API和业务服务中的任务处理逻辑,移除对Celery的依赖。

这些改动旨在提高系统的异步处理能力和整体性能。
2025-09-18 16:02:05 +08:00

122 lines
2.2 KiB
Python

#!/usr/bin/env python3
"""
Gunicorn配置文件
用于生产环境的FastAPI应用启动
"""
import multiprocessing
import os
from pathlib import Path
# 基础配置
bind = "0.0.0.0:8000"
workers = int(os.environ.get("WORKERS", multiprocessing.cpu_count() * 2 + 1))
worker_class = "uvicorn.workers.UvicornWorker"
worker_connections = 1000
max_requests = 1000
max_requests_jitter = 100
timeout = 30
keepalive = 2
# 日志配置
accesslog = "-"
errorlog = "-"
loglevel = "info"
# 安全配置
limit_request_line = 4096
limit_request_fields = 100
limit_request_field_size = 8190
# 进程管理
preload_app = True
pidfile = "/tmp/gunicorn.pid"
# 工作进程重启时的临时目录
temp_dir = "/tmp"
# 工作进程重启时保留的文件描述符数量
worker_tmp_dir = "/dev/shm"
# 环境变量传递
raw_env = [
f"ENVIRONMENT={os.environ.get('ENVIRONMENT', 'production')}",
f"DATABASE_URL={os.environ.get('DATABASE_URL', '')}",
f"REDIS_URL={os.environ.get('REDIS_URL', '')}",
]
# 重启策略
graceful_timeout = 30
reload = False
# 统计和监控
statsd_host = None
statsd_prefix = ""
# 工作进程启动时的钩子函数
def on_starting(server):
"""工作进程启动前的钩子函数"""
pass
def on_reload(server):
"""重载时的钩子函数"""
pass
def when_ready(server):
"""服务器准备就绪时的钩子函数"""
pass
def on_exit(server):
"""服务器退出时的钩子函数"""
pass
# 工作进程相关的钩子函数
def pre_fork(server, worker):
"""工作进程fork前的钩子函数"""
pass
def post_fork(server, worker):
"""工作进程fork后的钩子函数"""
pass
def post_worker_init(worker):
"""工作进程初始化后的钩子函数"""
pass
def worker_int(worker):
"""工作进程收到中断信号时的钩子函数"""
pass
def worker_abort(worker):
"""工作进程异常终止时的钩子函数"""
pass
def child_exit(server, worker):
"""子进程退出时的钩子函数"""
pass
def pre_exec(server):
"""工作进程执行前的钩子函数"""
pass
def pre_request(worker, req):
"""请求处理前的钩子函数"""
pass
def post_request(worker, req, environ, resp):
"""请求处理后的钩子函数"""
pass