- Wan2.2-TI2V-5B GPU 视频推理 - ahserver + longtasks 异步任务队列 - OpenAI 兼容 API: POST /api/submit, GET /api/task, GET /api/status - 模型常驻内存,惰性加载 - 全局串行推理锁(GPU 安全) - 支持 t2v/i2v/ti2v/s2v 四种任务类型
50 lines
1.4 KiB
Python
50 lines
1.4 KiB
Python
# -*- coding:utf-8 -*-
|
|
import os
|
|
from ahserver.webapp import webapp
|
|
from ahserver.serverenv import ServerEnv
|
|
from ahserver.configuredServer import add_startup
|
|
from longtasks.longtasks import LongTasks, schedule_once
|
|
from appPublic.log import debug
|
|
|
|
|
|
class Wan22Tasks(LongTasks):
|
|
def __init__(self, *args, **kwargs):
|
|
super().__init__(*args, **kwargs)
|
|
self.gpu_id = int(os.environ.get('WAN22_GPU_ID', '2'))
|
|
|
|
async def process_task(self, payload: dict, workid: int = None):
|
|
import json
|
|
if isinstance(payload, str):
|
|
payload = json.loads(payload)
|
|
task_type = payload.get('task_type', '')
|
|
debug(f'Wan22Tasks processing: type={task_type}')
|
|
if task_type == 'generate_video':
|
|
from workers.generate import run_generate
|
|
return await run_generate(self, payload)
|
|
raise ValueError(f'Unknown task_type: {task_type}')
|
|
|
|
|
|
async def on_app_built(app):
|
|
env = ServerEnv()
|
|
longtasks = env.longtasks
|
|
if longtasks:
|
|
schedule_once(0.1, longtasks.run)
|
|
debug(f'longtasks worker started, GPU: {longtasks.gpu_id}')
|
|
|
|
|
|
def init():
|
|
env = ServerEnv()
|
|
longtasks = Wan22Tasks(
|
|
'redis://127.0.0.1:6379',
|
|
'wan22',
|
|
worker_cnt=1,
|
|
stuck_seconds=3600,
|
|
max_age_hours=24
|
|
)
|
|
env.longtasks = longtasks
|
|
add_startup(on_app_built)
|
|
|
|
|
|
if __name__ == '__main__':
|
|
webapp(init)
|