perf: update start service

This commit is contained in:
ibuler
2026-03-04 10:13:43 +08:00
parent 0bc34cfdf7
commit 627260ad13
6 changed files with 29 additions and 34 deletions

View File

@@ -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

View File

@@ -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()

View File

@@ -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 *

View File

@@ -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

View File

@@ -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()

View File

@@ -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