Coverage for start_websocket_server.py: 0.00%

46 statements  

« prev     ^ index     » next       coverage.py v7.12.0, created at 2025-11-25 15:37 +0330

1#!/usr/bin/env python3 

2""" 

3🚀 راه‌انداز سرور برای تست WebSocket 

4Server launcher for WebSocket testing 

5""" 

6 

7import os 

8import sys 

9import subprocess 

10from pathlib import Path 

11 

12def check_port_available(port: int) -> bool: 

13 """بررسی اینکه پورت در دسترس است یا نه""" 

14 import socket 

15 with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s: 

16 try: 

17 s.bind(('localhost', port)) 

18 return True 

19 except OSError: 

20 return False 

21 

22def main(): 

23 """راه‌اندازی سرور""" 

24 port = 7860 

25 

26 print("=" * 60) 

27 print("🚀 راه‌اندازی سرور Crypto Intelligence Hub") 

28 print("=" * 60) 

29 

30 # بررسی پورت 

31 if not check_port_available(port): 

32 print(f"❌ پورت {port} در حال استفاده است!") 

33 print(f" لطفاً برنامه دیگری که از این پورت استفاده می‌کند را ببندید.") 

34 sys.exit(1) 

35 

36 print(f"✅ پورت {port} در دسترس است") 

37 

38 # بررسی فایل اصلی 

39 server_file = Path("hf_space_main.py") 

40 if not server_file.exists(): 

41 print(f"❌ فایل {server_file} یافت نشد!") 

42 print(" لطفاً مطمئن شوید که در دایرکتوری اصلی پروژه هستید.") 

43 sys.exit(1) 

44 

45 print(f"✅ فایل سرور یافت شد: {server_file}") 

46 

47 # تنظیم متغیرهای محیطی 

48 os.environ["PORT"] = str(port) 

49 os.environ["HOST"] = "0.0.0.0" 

50 

51 print("\n" + "=" * 60) 

52 print("📡 در حال راه‌اندازی سرور...") 

53 print("=" * 60) 

54 print(f"🌐 آدرس: http://localhost:{port}") 

55 print(f"📖 API Docs: http://localhost:{port}/docs") 

56 print(f"🔌 WebSocket: ws://localhost:{port}/ws") 

57 print(f"❤️ Health Check: http://localhost:{port}/api/health") 

58 print("\n⏸️ برای توقف سرور Ctrl+C را فشار دهید\n") 

59 

60 try: 

61 # راه‌اندازی سرور با uvicorn 

62 subprocess.run([ 

63 sys.executable, "-m", "uvicorn", 

64 "hf_space_main:app", 

65 "--host", "0.0.0.0", 

66 "--port", str(port), 

67 "--log-level", "info", 

68 "--reload" # برای development - در production حذف کنید 

69 ]) 

70 except KeyboardInterrupt: 

71 print("\n\n🛑 سرور متوقف شد") 

72 sys.exit(0) 

73 except Exception as e: 

74 print(f"\n❌ خطا در راه‌اندازی سرور: {e}") 

75 sys.exit(1) 

76 

77if __name__ == "__main__": 

78 main() 

79