feat: 添加web服务器gunicorn

This commit is contained in:
shaohuzhang1 2024-07-19 18:23:56 +08:00 committed by GitHub
parent 4d8ac28674
commit 16851592c3
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
4 changed files with 59 additions and 3 deletions

View File

@ -0,0 +1,45 @@
# coding=utf-8
"""
@project: MaxKB
@Author
@file gunicorn.py
@date2024/7/19 17:43
@desc:
"""
import os
import subprocess
from django.core.management.base import BaseCommand
from smartdoc.const import BASE_DIR
class Command(BaseCommand):
help = 'My custom command'
# 参数设定
def add_arguments(self, parser):
parser.add_argument('-b', nargs='+', type=str, help="端口:0.0.0.0:8080") # 0.0.0.0:8080
parser.add_argument('-k', nargs='?', type=str,
help="workers处理器:uvicorn.workers.UvicornWorker") # uvicorn.workers.UvicornWorker
parser.add_argument('-w', action='append', type=str, help='worker 数量') # worker 数量
parser.add_argument('--max-requests', action='append', type=str, help="最大请求") # 10240
parser.add_argument('--max-requests-jitter', action='append', type=str)
parser.add_argument('--access-logformat', action='append', type=str) # %(h)s %(t)s %(L)ss "%(r)s" %(s)s %(b)s
def handle(self, *args, **options):
log_format = '%(h)s %(t)s %(L)ss "%(r)s" %(s)s %(b)s '
cmd = [
'gunicorn', 'smartdoc.asgi:application',
'-b', options.get('b') if options.get('b') is not None else '0.0.0.0:8080',
'-k', options.get('k') if options.get('k') is not None else 'uvicorn.workers.UvicornWorker',
'-w', options.get('w') if options.get('w') is not None else '5',
'--max-requests', options.get('max_requests') if options.get('max_requests') is not None else '10240',
'--max-requests-jitter',
options.get('max_requests_jitter') if options.get('max_requests_jitter') is not None else '2048',
'--access-logformat',
options.get('access_logformat') if options.get('access_logformat') is not None else log_format,
'--access-logfile', '-'
]
kwargs = {'cwd': BASE_DIR}
subprocess.run(cmd, **kwargs)

View File

@ -38,7 +38,8 @@ INSTALLED_APPS = [
'rest_framework',
"drf_yasg", # swagger 接口
'django_filters', # 条件过滤
'django_apscheduler'
'django_apscheduler',
'common'
]

View File

@ -43,7 +43,10 @@ def perform_db_migrate():
def start_services():
management.call_command('migrate')
management.call_command('gunicorn')
def runserver():
management.call_command('runserver', "0.0.0.0:8080")
@ -70,6 +73,10 @@ if __name__ == '__main__':
perform_db_migrate()
elif action == "collect_static":
collect_static()
elif action == 'dev':
perform_db_migrate()
runserver()
else:
collect_static()
perform_db_migrate()
start_services()

View File

@ -19,7 +19,7 @@ jieba = "^0.42.1"
diskcache = "^5.6.3"
pillow = "^10.2.0"
filetype = "^1.2.0"
torch = "^2.2.1"
torch = "2.2.1"
sentence-transformers = "^2.2.2"
blinker = "^1.6.3"
openai = "^1.13.3"
@ -42,6 +42,9 @@ websocket-client = "^1.7.0"
langchain-google-genai = "^1.0.3"
openpyxl = "^3.1.2"
xlrd = "^2.0.1"
gunicorn = "21.2.0"
python-daemon = "3.0.1"
uvicorn = "0.22.0"
[build-system]
requires = ["poetry-core"]