NewsBlur/config/gunicorn_conf.py

62 lines
1.6 KiB
Python
Raw Permalink Normal View History

2024-02-18 08:12:28 -05:00
import math
import os
2024-02-18 08:12:28 -05:00
2013-06-24 17:59:31 -07:00
import psutil
2011-02-09 15:45:41 -05:00
try:
from newsblur_web import app_env
except ImportError:
app_env = None
2024-04-24 09:43:56 -04:00
GIGS_OF_MEMORY = psutil.virtual_memory().total / 1024 / 1024 / 1024.0
2016-12-02 19:10:54 -08:00
NUM_CPUS = psutil.cpu_count()
2011-02-09 15:45:41 -05:00
bind = "0.0.0.0:8000"
2013-02-25 19:01:04 -08:00
pidfile = "/srv/newsblur/logs/gunicorn.pid"
logfile = "/srv/newsblur/logs/production.log"
accesslog = "/srv/newsblur/logs/production.log"
errorlog = "/srv/newsblur/logs/errors.log"
loglevel = "info"
2011-02-09 15:45:41 -05:00
name = "newsblur"
timeout = 120
max_requests = 1000
2014-05-22 09:32:42 -07:00
x_forwarded_for_header = "X-FORWARDED-FOR"
2014-05-22 09:21:38 -07:00
forwarded_allow_ips = "*"
limit_request_line = 16000
limit_request_fields = 1000
2021-03-29 18:01:13 -04:00
worker_tmp_dir = "/dev/shm"
reload = False
2013-06-26 12:27:43 -07:00
workers = max(int(math.floor(GIGS_OF_MEMORY * 2)), 3)
2013-03-13 23:21:30 -07:00
2024-02-18 08:12:28 -05:00
if workers > 16:
workers = 16
2024-04-24 09:43:56 -04:00
if os.environ.get("DOCKERBUILD", False):
workers = 2
reload = True
2022-03-31 15:34:33 -04:00
# If hostname has staging in it, only 2 workers
if app_env and "staging" in getattr(app_env, "SERVER_NAME", ""):
workers = 2
2024-04-24 09:43:56 -04:00
prom_folder = "/srv/newsblur/.prom_cache"
2022-03-31 15:34:33 -04:00
os.makedirs(prom_folder, exist_ok=True)
2024-04-24 09:43:56 -04:00
os.environ["PROMETHEUS_MULTIPROC_DIR"] = prom_folder
2022-03-31 15:34:33 -04:00
for filename in os.listdir(prom_folder):
file_path = os.path.join(prom_folder, filename)
try:
if os.path.isfile(file_path) or os.path.islink(file_path):
os.unlink(file_path)
elif os.path.isdir(file_path):
shutil.rmtree(file_path)
except Exception as e:
2024-04-24 09:43:56 -04:00
print("Failed to delete %s. Reason: %s" % (file_path, e))
2022-03-31 15:34:33 -04:00
from prometheus_client import multiprocess
2024-02-18 08:12:28 -05:00
2022-03-31 15:34:33 -04:00
def child_exit(server, worker):
multiprocess.mark_process_dead(worker.pid)