Enhance Ticket management functionalities

This commit is contained in:
2026-03-25 17:33:34 -04:00
parent bee7146073
commit 49542d1f14
7 changed files with 218 additions and 69 deletions
+41 -24
View File
@@ -1,36 +1,53 @@
# gunicorn.conf.py
import multiprocessing
# Server socket
bind = "127.0.0.1:7000"
backlog = 2048
bind = "127.0.0.1:7000" # match your nginx proxy_pass port
backlog = 2048
# Worker processes
worker_class = "eventlet" # Required for Flask-SocketIO
workers = 1 # eventlet requires exactly 1 worker
worker_connections = 1000
timeout = 120
keepalive = 5
# Worker — eventlet requires exactly 1 worker process.
# Concurrency is handled by eventlet's cooperative green-thread pool.
worker_class = "eventlet"
workers = 1
worker_connections= 2000
timeout = 300
keepalive = 75
# Preloading ensures eventlet.monkey_patch() in run.py runs once before fork
preload_app = True
# Application
module = "run:app"
wsgi_app = "run:app"
# Logging
accesslog = "logs/gunicorn_access.log"
errorlog = "logs/gunicorn_error.log"
loglevel = "info"
access_log_format = '%(h)s %(l)s %(u)s %(t)s "%(r)s" %(s)s %(b)s "%(f)s" "%(a)s" %(D)sµs'
accesslog = "logs/gunicorn_access.log"
errorlog = "logs/gunicorn_error.log"
loglevel = "warning" # suppress routine socket close noise
capture_output = False # don't capture eventlet's stderr Errno 9 messages
access_log_format = '%(h)s %(l)s %(u)s %(t)s "%(r)s" %(s)s %(b)s "%(a)s" %(D)sµs'
# Process naming
proc_name = "it_ticket_system"
proc_name = "it_ticket_system"
daemon = False
pidfile = "/tmp/it_tickets.pid"
# Server mechanics
daemon = False
pidfile = "/tmp/it_tickets.pid"
user = None # Set to your app user, e.g. "www-data"
group = None
tmp_upload_dir = None
# SSL (configure if not using nginx for SSL termination)
# keyfile = "/etc/ssl/private/your.key"
# certfile = "/etc/ssl/certs/your.crt"
def post_fork(server, worker):
"""Called after a worker is forked. Patch eventlet per-worker."""
import eventlet
eventlet.monkey_patch()
def worker_exit(server, worker):
"""
Called when a worker exits. Cleanly close any remaining eventlet sockets
to prevent [Errno 9] Bad file descriptor errors in the logs.
These errors are benign (connections recover automatically) but noisy.
"""
try:
import eventlet.greenio
# Hub cleanup — tells eventlet to stop watching all open file descriptors
hub = eventlet.hubs.get_hub()
if hasattr(hub, 'abort'):
hub.abort(wait=False)
except Exception:
pass