From 627260ad133664ffdecc45a7e07eb0a434849767 Mon Sep 17 00:00:00 2001 From: ibuler Date: Wed, 4 Mar 2026 10:13:43 +0800 Subject: [PATCH] perf: update start service --- apps/common/apps.py | 2 +- .../management/commands/services/command.py | 35 ++++++++++++------- .../commands/services/services/__init__.py | 1 - .../services/services/celery_default.py | 7 ++-- .../commands/services/services/celery_mix.py | 16 --------- .../commands/services/services/gunicorn.py | 2 +- 6 files changed, 29 insertions(+), 34 deletions(-) delete mode 100644 apps/common/management/commands/services/services/celery_mix.py diff --git a/apps/common/apps.py b/apps/common/apps.py index 23913256d..47f294579 100644 --- a/apps/common/apps.py +++ b/apps/common/apps.py @@ -15,7 +15,7 @@ class CommonConfig(AppConfig): from . import tasks # noqa from .signals import django_ready - excludes = ['migrate', 'compilemessages', 'makemigrations'] + excludes = ['migrate', 'compilemessages', 'makemigrations', 'start'] for i in excludes: if i in sys.argv: return diff --git a/apps/common/management/commands/services/command.py b/apps/common/management/commands/services/command.py index 9d3dc9203..7dcc786b6 100644 --- a/apps/common/management/commands/services/command.py +++ b/apps/common/management/commands/services/command.py @@ -23,7 +23,6 @@ class Services(TextChoices): gunicorn = 'gunicorn', 'gunicorn' celery_ansible = 'celery_ansible', 'celery_ansible' celery_default = 'celery_default', 'celery_default' - celery_mix = 'celery_mix', 'celery_mix' beat = 'beat', 'beat' flower = 'flower', 'flower' ws = 'ws', 'ws' @@ -40,7 +39,6 @@ class Services(TextChoices): cls.flower: services.FlowerService, cls.celery_default: services.CeleryDefaultService, cls.celery_ansible: services.CeleryAnsibleService, - cls.celery_mix: services.CeleryMixService, cls.beat: services.BeatService, } return services_map.get(name) @@ -55,7 +53,7 @@ class Services(TextChoices): @classmethod def celery_services(cls): if SERVER_SIZE == 'small': - return [cls.celery_mix] + return [cls.celery_default] else: return [cls.celery_ansible, cls.celery_default] @@ -89,10 +87,11 @@ class Services(TextChoices): service_class = cls.get_service_object_class(s.value) if not service_class: continue - kwargs.update({ + service_kwargs = kwargs.get(s.value, {}) + service_kwargs.update({ 'name': s.value }) - service_object = service_class(**kwargs) + service_object = service_class(**service_kwargs) service_objects.append(service_object) return service_objects @@ -121,14 +120,27 @@ class BaseActionCommand(BaseCommand): parser.add_argument('-w', '--worker', type=int, nargs="?", default=4) parser.add_argument('-f', '--force', nargs="?", const=True) + def get_services_kwargs(self, options): + worker = options.get('worker', 4) + default_queue = 'celery' + + if SERVER_SIZE == 'small': + worker = 1 + default_queue = 'celery,ansible' + + return { + 'gunicorn': { + 'worker': worker + }, + 'celery_default': { + 'queue': default_queue + } + } + def initial_util(self, *args, **options): service_names = options.get('services') - worker = options.get('worker') - if SERVER_SIZE == 'small': - worker = '1' - service_kwargs = { - 'worker_gunicorn': worker - } + + service_kwargs = self.get_services_kwargs(options) services = Services.get_service_objects(service_names=service_names, **service_kwargs) kwargs = { @@ -147,7 +159,6 @@ class BaseActionCommand(BaseCommand): def _handle_start(self): self.util.start_and_watch() - os._exit(0) def _handle_stop(self): self.util.stop() diff --git a/apps/common/management/commands/services/services/__init__.py b/apps/common/management/commands/services/services/__init__.py index a3713791b..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 .celery_mix import * from .flower import * from .gunicorn import * diff --git a/apps/common/management/commands/services/services/celery_default.py b/apps/common/management/commands/services/services/celery_default.py index ad3d69fe1..3a8fd0b7d 100644 --- a/apps/common/management/commands/services/services/celery_default.py +++ b/apps/common/management/commands/services/services/celery_default.py @@ -1,3 +1,4 @@ +from django.db.models import query from .celery_base import CeleryBaseService __all__ = ['CeleryDefaultService'] @@ -5,9 +6,9 @@ __all__ = ['CeleryDefaultService'] class CeleryDefaultService(CeleryBaseService): - def __init__(self, **kwargs): - kwargs['queue'] = 'celery' - super().__init__(**kwargs) + def __init__(self, **kwargs): + queue = kwargs.pop('queue', 'celery') + super().__init__(queue=queue, **kwargs) def start_other(self): from terminal.startup import CeleryTerminal diff --git a/apps/common/management/commands/services/services/celery_mix.py b/apps/common/management/commands/services/services/celery_mix.py deleted file mode 100644 index 8262ca9b3..000000000 --- a/apps/common/management/commands/services/services/celery_mix.py +++ /dev/null @@ -1,16 +0,0 @@ -from .celery_base import CeleryBaseService - -__all__ = ['CeleryMixService'] - - -class CeleryMixService(CeleryBaseService): - - def __init__(self, **kwargs): - kwargs['queue'] = 'celery,ansible' - super().__init__(**kwargs) - - def start_other(self): - from terminal.startup import CeleryTerminal - celery_terminal = CeleryTerminal() - celery_terminal.start_heartbeat_thread() - diff --git a/apps/common/management/commands/services/services/gunicorn.py b/apps/common/management/commands/services/services/gunicorn.py index ab1a59881..794928e09 100644 --- a/apps/common/management/commands/services/services/gunicorn.py +++ b/apps/common/management/commands/services/services/gunicorn.py @@ -7,7 +7,7 @@ __all__ = ['GunicornService'] class GunicornService(BaseService): def __init__(self, **kwargs): - self.worker = kwargs['worker_gunicorn'] + self.worker = kwargs.get('worker', 2) super().__init__(**kwargs) @property