mirror of
https://github.com/1Panel-dev/MaxKB.git
synced 2025-12-26 01:33:05 +00:00
47 lines
1.2 KiB
Python
47 lines
1.2 KiB
Python
# coding=utf-8
|
||
"""
|
||
@project: MaxKB
|
||
@Author:虎
|
||
@file: celery.py
|
||
@date:2024/8/19 11:57
|
||
@desc:
|
||
"""
|
||
import os
|
||
import subprocess
|
||
|
||
from django.core.management.base import BaseCommand
|
||
|
||
from smartdoc.const import BASE_DIR
|
||
|
||
|
||
class Command(BaseCommand):
|
||
help = 'celery'
|
||
|
||
def add_arguments(self, parser):
|
||
parser.add_argument(
|
||
'service', nargs='+', type=str, choices=("celery", "model"), help='Service',
|
||
)
|
||
|
||
def handle(self, *args, **options):
|
||
service = options.get('service')
|
||
os.environ.setdefault('CELERY_NAME', ','.join(service))
|
||
server_hostname = os.environ.get("SERVER_HOSTNAME")
|
||
if hasattr(os, 'getuid') and os.getuid() == 0:
|
||
os.environ.setdefault('C_FORCE_ROOT', '1')
|
||
if not server_hostname:
|
||
server_hostname = '%h'
|
||
cmd = [
|
||
'celery',
|
||
'-A', 'ops',
|
||
'worker',
|
||
'-P', 'threads',
|
||
'-l', 'info',
|
||
'-c', '10',
|
||
'-Q', ','.join(service),
|
||
'--heartbeat-interval', '10',
|
||
'-n', f'{",".join(service)}@{server_hostname}',
|
||
'--without-mingle',
|
||
]
|
||
kwargs = {'cwd': BASE_DIR}
|
||
subprocess.run(cmd, **kwargs)
|