2021-02-15 16:27:35 +01:00
|
|
|
import os
|
|
|
|
|
|
2022-08-31 10:59:55 -07:00
|
|
|
# See https://docs.gunicorn.org/en/stable/settings.html for
|
|
|
|
|
# explanations of settings
|
|
|
|
|
|
2022-08-04 07:43:23 -07:00
|
|
|
bind = f'{os.getenv("PAPERLESS_BIND_ADDR", "[::]")}:{os.getenv("PAPERLESS_PORT", 8000)}'
|
2022-08-31 10:59:55 -07:00
|
|
|
|
2022-07-11 13:54:04 -07:00
|
|
|
workers = int(os.getenv("PAPERLESS_WEBSERVER_WORKERS", 1))
|
2022-02-27 15:37:20 +01:00
|
|
|
worker_class = "paperless.workers.ConfigurableWorker"
|
2021-02-06 18:51:53 +01:00
|
|
|
timeout = 120
|
2022-08-31 10:59:55 -07:00
|
|
|
preload_app = True
|
|
|
|
|
|
|
|
|
|
# https://docs.gunicorn.org/en/stable/faq.html#blocking-os-fchmod
|
|
|
|
|
worker_tmp_dir = "/dev/shm"
|
2016-09-20 23:59:57 +05:30
|
|
|
|
2022-02-27 15:37:20 +01:00
|
|
|
|
2016-09-20 23:59:57 +05:30
|
|
|
def pre_fork(server, worker):
|
|
|
|
|
pass
|
|
|
|
|
|
2022-02-27 15:37:20 +01:00
|
|
|
|
2016-09-20 23:59:57 +05:30
|
|
|
def pre_exec(server):
|
|
|
|
|
server.log.info("Forked child, re-executing.")
|
|
|
|
|
|
2022-02-27 15:37:20 +01:00
|
|
|
|
2016-09-20 23:59:57 +05:30
|
|
|
def when_ready(server):
|
|
|
|
|
server.log.info("Server is ready. Spawning workers")
|
|
|
|
|
|
2022-02-27 15:37:20 +01:00
|
|
|
|
2016-09-20 23:59:57 +05:30
|
|
|
def worker_int(worker):
|
|
|
|
|
worker.log.info("worker received INT or QUIT signal")
|
|
|
|
|
|
|
|
|
|
## get traceback info
|
2023-03-28 09:39:30 -07:00
|
|
|
import sys
|
|
|
|
|
import threading
|
|
|
|
|
import traceback
|
2022-02-27 15:37:20 +01:00
|
|
|
|
2022-05-06 09:04:08 -07:00
|
|
|
id2name = {th.ident: th.name for th in threading.enumerate()}
|
2016-09-20 23:59:57 +05:30
|
|
|
code = []
|
|
|
|
|
for threadId, stack in sys._current_frames().items():
|
2024-05-04 13:26:15 -07:00
|
|
|
code.append(f"\n# Thread: {id2name.get(threadId, '')}({threadId})")
|
2016-09-20 23:59:57 +05:30
|
|
|
for filename, lineno, name, line in traceback.extract_stack(stack):
|
2024-05-04 13:26:15 -07:00
|
|
|
code.append(f'File: "{filename}", line {lineno}, in {name}')
|
2016-09-20 23:59:57 +05:30
|
|
|
if line:
|
2024-05-04 13:26:15 -07:00
|
|
|
code.append(f" {line.strip()}")
|
2016-09-20 23:59:57 +05:30
|
|
|
worker.log.debug("\n".join(code))
|
|
|
|
|
|
2022-02-27 15:37:20 +01:00
|
|
|
|
2016-09-20 23:59:57 +05:30
|
|
|
def worker_abort(worker):
|
|
|
|
|
worker.log.info("worker received SIGABRT signal")
|