LiteSpeed服务器部署Quart ASGI应用请求超时问题求助
问题根因
你当前配置的核心错误是main.py中的启动代码没有加__name__ == "__main__"判断,当passenger_wsgi.py导入main模块时,末尾的asyncio.run(main())会直接执行,启动Quart内置监听服务,导致进程永久阻塞,Passenger无法获取到应用入口,自然所有请求都会超时。
修复方案
方案1:修复现有配置直接运行Quart
- 修改
main.py,将启动代码包裹在判断逻辑中,同时Quart路由建议定义为异步函数避免阻塞事件循环:
import asyncio from quart import Quart server = Quart("App") @server.route('/', methods=['GET', 'POST']) async def ping(): return "OK!" if __name__ == "__main__": async def main(): await server.run_task() asyncio.run(main())
- 替换自定义的ASGI转WSGI适配器,使用成熟的第三方库避免兼容问题:
- 先在你的Python环境安装依赖:
pip install a2wsgi - 修改
passenger_wsgi.py内容如下,删除自定义的wsgi_bridge.py文件:
- 先在你的Python环境安装依赖:
from a2wsgi import ASGIMiddleware from main import server application = ASGIMiddleware(server)
- 重启LiteSpeed Python Selector对应的应用进程,重新访问即可正常响应。
方案2:兼容原有Flask部署逻辑的替代方案
如果不想折腾ASGI转WSGI的兼容,可以直接用Flask实现相同的Discord机器人联动需求,直接复用你之前的Flask部署配置即可:
from flask import Flask import asyncio # 导入你Discord机器人的异步发消息方法 from your_bot_module import send_to_discord_channel app = Flask(__name__) @app.route('/send') def send_msg(): # 同步路由中运行异步Discord方法 asyncio.run(send_to_discord_channel("用户触发的测试消息")) return "消息已推送" @app.route('/', methods=['GET', 'POST']) def ping(): return "OK!" if __name__ == "__main__": app.run()
内容的提问来源于stack exchange,提问作者NORXND
相关产品推荐
相关产品推荐

