Merge pull request #1879 from SchrodingersGat/docker-improvements

Specify how many workers to use
This commit is contained in:
Oliver 2021-07-29 17:19:41 +10:00 committed by GitHub
commit 60e4022568
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 35 additions and 2 deletions

View File

@ -12,6 +12,7 @@ database setup in this file.
""" """
import logging import logging
import os import os
import random import random
import string import string
@ -347,10 +348,22 @@ REST_FRAMEWORK = {
WSGI_APPLICATION = 'InvenTree.wsgi.application' WSGI_APPLICATION = 'InvenTree.wsgi.application'
background_workers = os.environ.get('INVENTREE_BACKGROUND_WORKERS', None)
if background_workers is not None:
try:
background_workers = int(background_workers)
except ValueError:
background_workers = None
if background_workers is None:
# Sensible default?
background_workers = 4
# django-q configuration # django-q configuration
Q_CLUSTER = { Q_CLUSTER = {
'name': 'InvenTree', 'name': 'InvenTree',
'workers': 4, 'workers': background_workers,
'timeout': 90, 'timeout': 90,
'retry': 120, 'retry': 120,
'queue_limit': 50, 'queue_limit': 50,

View File

@ -27,6 +27,10 @@ ENV INVENTREE_MEDIA_ROOT="${INVENTREE_DATA_DIR}/media"
ENV INVENTREE_CONFIG_FILE="${INVENTREE_DATA_DIR}/config.yaml" ENV INVENTREE_CONFIG_FILE="${INVENTREE_DATA_DIR}/config.yaml"
ENV INVENTREE_SECRET_KEY_FILE="${INVENTREE_DATA_DIR}/secret_key.txt" ENV INVENTREE_SECRET_KEY_FILE="${INVENTREE_DATA_DIR}/secret_key.txt"
# Worker configuration (can be altered by user)
ENV INVENTREE_GUNICORN_WORKERS="4"
ENV INVENTREE_BACKGROUND_WORKERS="4"
# Default web server port is 8000 # Default web server port is 8000
ENV INVENTREE_WEB_PORT="8000" ENV INVENTREE_WEB_PORT="8000"

View File

@ -1,6 +1,22 @@
import multiprocessing import multiprocessing
import os
import logging
logger = logging.get('inventree')
workers = os.environ.get('INVENTREE_GUNICORN_WORKERS', None)
if workers is not None:
try:
workers = int(workers)
except ValueError:
workers = None
if workers is None:
workers = multiprocessing.cpu_count() * 2 + 1 workers = multiprocessing.cpu_count() * 2 + 1
logger.info(f"Starting gunicorn server with {workers} workers")
max_requests = 1000 max_requests = 1000
max_requests_jitter = 50 max_requests_jitter = 50