test_asgi_setup.py 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. #!/usr/bin/env python3
  2. """
  3. 测试ASGI设置是否正确
  4. """
  5. import sys
  6. import importlib.util
  7. def test_asgi_dependencies():
  8. """测试ASGI依赖是否可用"""
  9. print("🧪 测试ASGI依赖...")
  10. # 测试uvicorn
  11. try:
  12. import uvicorn
  13. print(f" ✅ uvicorn: {uvicorn.__version__}")
  14. except ImportError:
  15. print(" ❌ uvicorn: 未安装")
  16. print(" 安装命令: pip install uvicorn")
  17. return False
  18. # 测试asgiref
  19. try:
  20. import asgiref
  21. print(f" ✅ asgiref: {asgiref.__version__}")
  22. except ImportError:
  23. print(" ❌ asgiref: 未安装")
  24. print(" 安装命令: pip install asgiref")
  25. return False
  26. # 测试WsgiToAsgi
  27. try:
  28. from asgiref.wsgi import WsgiToAsgi
  29. print(" ✅ WsgiToAsgi: 可用")
  30. except ImportError:
  31. print(" ❌ WsgiToAsgi: 不可用")
  32. return False
  33. return True
  34. def test_api_import():
  35. """测试API模块是否可以正常导入"""
  36. print("\n🧪 测试API模块导入...")
  37. try:
  38. from api import app
  39. print(" ✅ Flask应用导入成功")
  40. return True
  41. except ImportError as e:
  42. print(f" ❌ Flask应用导入失败: {e}")
  43. return False
  44. def test_asgi_conversion():
  45. """测试ASGI转换是否工作"""
  46. print("\n🧪 测试ASGI转换...")
  47. try:
  48. from asgiref.wsgi import WsgiToAsgi
  49. from api import app
  50. asgi_app = WsgiToAsgi(app)
  51. print(" ✅ WSGI到ASGI转换成功")
  52. return True
  53. except Exception as e:
  54. print(f" ❌ ASGI转换失败: {e}")
  55. return False
  56. def main():
  57. """主测试函数"""
  58. print("=" * 50)
  59. print("🚀 ASGI设置测试")
  60. print("=" * 50)
  61. success = True
  62. # 测试依赖
  63. if not test_asgi_dependencies():
  64. success = False
  65. # 测试API导入
  66. if not test_api_import():
  67. success = False
  68. # 测试ASGI转换
  69. if success and not test_asgi_conversion():
  70. success = False
  71. print("\n" + "=" * 50)
  72. if success:
  73. print("✅ 所有测试通过!可以使用ASGI模式启动")
  74. print("💡 启动命令: python api.py")
  75. else:
  76. print("❌ 测试失败,请检查依赖安装")
  77. print("💡 安装命令: pip install uvicorn asgiref")
  78. print("=" * 50)
  79. if __name__ == "__main__":
  80. main()