From 392ae18d85f0e5f56b0fd4ad34d7f635053bf032 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E5=90=B4=E5=B0=8F=E7=99=BD?= <296015668@qq.com>
Date: Sun, 27 Nov 2022 05:56:53 +0800
Subject: [PATCH] =?UTF-8?q?feat:=20=E4=BD=BF=E7=94=A8=20uvicorn=20?=
 =?UTF-8?q?=E5=8F=96=E4=BB=A3=20daphne?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .../management/commands/services/command.py   |  8 +-----
 .../commands/services/services/__init__.py    |  1 -
 .../commands/services/services/daphne.py      | 25 -------------------
 .../commands/services/services/gunicorn.py    |  4 +--
 requirements/requirements.txt                 |  4 +--
 5 files changed, 5 insertions(+), 37 deletions(-)
 delete mode 100644 apps/common/management/commands/services/services/daphne.py

diff --git a/apps/common/management/commands/services/command.py b/apps/common/management/commands/services/command.py
index dd2cd9cdb..1fb28fd3a 100644
--- a/apps/common/management/commands/services/command.py
+++ b/apps/common/management/commands/services/command.py
@@ -6,7 +6,6 @@ from .hands import *
 
 class Services(TextChoices):
     gunicorn = 'gunicorn', 'gunicorn'
-    daphne = 'daphne', 'daphne'
     celery_ansible = 'celery_ansible', 'celery_ansible'
     celery_default = 'celery_default', 'celery_default'
     beat = 'beat', 'beat'
@@ -22,7 +21,6 @@ class Services(TextChoices):
         from . import services
         services_map = {
             cls.gunicorn.value: services.GunicornService,
-            cls.daphne: services.DaphneService,
             cls.flower: services.FlowerService,
             cls.celery_default: services.CeleryDefaultService,
             cls.celery_ansible: services.CeleryAnsibleService,
@@ -30,13 +28,9 @@ class Services(TextChoices):
         }
         return services_map.get(name)
 
-    @classmethod
-    def ws_services(cls):
-        return [cls.daphne]
-
     @classmethod
     def web_services(cls):
-        return [cls.gunicorn, cls.daphne, cls.flower]
+        return [cls.gunicorn, cls.flower]
 
     @classmethod
     def celery_services(cls):
diff --git a/apps/common/management/commands/services/services/__init__.py b/apps/common/management/commands/services/services/__init__.py
index cceb9627c..35329a7d4 100644
--- a/apps/common/management/commands/services/services/__init__.py
+++ b/apps/common/management/commands/services/services/__init__.py
@@ -1,6 +1,5 @@
 from .beat import *
 from .celery_ansible import *
 from .celery_default import *
-from .daphne import *
 from .flower import *
 from .gunicorn import *
diff --git a/apps/common/management/commands/services/services/daphne.py b/apps/common/management/commands/services/services/daphne.py
deleted file mode 100644
index 09dd337a6..000000000
--- a/apps/common/management/commands/services/services/daphne.py
+++ /dev/null
@@ -1,25 +0,0 @@
-from ..hands import *
-from .base import BaseService
-
-__all__ = ['DaphneService']
-
-
-class DaphneService(BaseService):
-
-    def __init__(self, **kwargs):
-        super().__init__(**kwargs)
-
-    @property
-    def cmd(self):
-        print("\n- Start Daphne ASGI WS Server")
-
-        cmd = [
-            'daphne', 'jumpserver.asgi:application',
-            '-b', HTTP_HOST,
-            '-p', str(WS_PORT),
-        ]
-        return cmd
-
-    @property
-    def cwd(self):
-        return APPS_DIR
diff --git a/apps/common/management/commands/services/services/gunicorn.py b/apps/common/management/commands/services/services/gunicorn.py
index bfaeea8c4..5cc67b45c 100644
--- a/apps/common/management/commands/services/services/gunicorn.py
+++ b/apps/common/management/commands/services/services/gunicorn.py
@@ -17,9 +17,9 @@ class GunicornService(BaseService):
         log_format = '%(h)s %(t)s %(L)ss "%(r)s" %(s)s %(b)s '
         bind = f'{HTTP_HOST}:{HTTP_PORT}'
         cmd = [
-            'gunicorn', 'jumpserver.wsgi',
+            'gunicorn', 'jumpserver.asgi:application',
             '-b', bind,
-            '-k', 'gthread',
+            '-k', 'uvicorn.workers.UvicornWorker',
             '--threads', '10',
             '-w', str(self.worker),
             '--max-requests', '4096',
diff --git a/requirements/requirements.txt b/requirements/requirements.txt
index 8af2fcb0f..0ff982b81 100644
--- a/requirements/requirements.txt
+++ b/requirements/requirements.txt
@@ -86,8 +86,6 @@ pytz==2022.1
 # Runtime
 django-proxy==1.2.1
 channels-redis==3.4.0
-channels==3.0.4
-daphne==3.0.2
 python-daemon==2.3.0
 eventlet==0.33.1
 greenlet==1.1.2
@@ -96,6 +94,8 @@ celery==5.2.7
 flower==1.0.0
 django-celery-beat==2.3.0
 kombu==5.2.4
+uvicorn==0.20.0
+websockets==10.4
 # Auth
 python-ldap==3.4.0
 ldap3==2.9.1