run_server.py 1.7 KB
Newer Older
baltery's avatar
baltery 已提交
1
#!/usr/bin/env python
2 3 4

import os
import subprocess
baltery's avatar
baltery 已提交
5 6
import time
from threading import Thread
7

baltery's avatar
baltery 已提交
8
from apps import __version__
9

baltery's avatar
baltery 已提交
10 11
try:
    from config import config as CONFIG
12 13 14 15 16
except ImportError:
    CONFIG = type('_', (), {'__getattr__': None})()


BASE_DIR = os.path.dirname(os.path.abspath(__file__))
baltery's avatar
baltery 已提交
17 18 19 20 21
APPS_DIR = os.path.join(BASE_DIR, 'apps')
HTTP_HOST = CONFIG.HTTP_BIND_HOST or '127.0.0.1'
HTTP_PORT = CONFIG.HTTP_LISTEN_PORT or 8080
LOG_LEVEL = CONFIG.LOG_LEVEL
WORKERS = 4
22 23


baltery's avatar
baltery 已提交
24 25 26 27 28
def start_gunicorn():
    print("- Start Gunicorn WSGI HTTP Server")
    os.chdir(APPS_DIR)
    cmd = "gunicorn jumpserver.wsgi -b {}:{} -w {}".format(HTTP_HOST, HTTP_PORT, WORKERS)
    subprocess.call(cmd, shell=True)
29 30 31


def start_celery():
baltery's avatar
baltery 已提交
32 33 34 35 36
    print("- Start Celery as Distributed Task Queue")
    os.chdir(APPS_DIR)
    # os.environ.setdefault('PYTHONOPTIMIZE', '1')
    cmd = 'celery -A common worker -l {}'.format(LOG_LEVEL.lower())
    subprocess.call(cmd, shell=True)
37 38


baltery's avatar
baltery 已提交
39 40 41 42 43 44 45
def start_beat():
    print("- Start Beat as Periodic Task Scheduler")
    os.chdir(APPS_DIR)
    # os.environ.setdefault('PYTHONOPTIMIZE', '1')
    schduler = "django_celery_beat.schedulers:DatabaseScheduler"
    cmd = 'celery -A common beat  -l {} --scheduler {}'.format(LOG_LEVEL, schduler)
    subprocess.call(cmd, shell=True)
46 47


baltery's avatar
baltery 已提交
48 49 50 51 52 53 54 55 56 57 58 59 60 61
def main():
    print(time.ctime())
    print('Jumpserver version {}, more see https://www.jumpserver.org'.format(
        __version__))
    print('Quit the server with CONTROL-C.')

    threads = []
    for func in (start_gunicorn, start_celery, start_beat):
        t = Thread(target=func, args=())
        threads.append(t)
        t.start()

    for t in threads:
        t.join()
62 63 64 65 66


if __name__ == '__main__':
    main()

baltery's avatar
baltery 已提交
67 68 69 70 71