-
-
Save gcavalcante8808/1f0a89ed72a3b3aca5dc63e2804eb896 to your computer and use it in GitHub Desktop.
import bjoern | |
import os, signal | |
from django.core.wsgi import get_wsgi_application | |
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'app.settings') | |
app = get_wsgi_application() | |
NUM_WORKERS = 8 | |
worker_pids = [] | |
bjoern.listen(app, '0.0.0.0', 8000) | |
for _ in range(NUM_WORKERS): | |
pid = os.fork() | |
if pid > 0: | |
# in master | |
worker_pids.append(pid) | |
elif pid == 0: | |
# in worker | |
try: | |
bjoern.run() | |
except KeyboardInterrupt: | |
pass | |
exit() | |
try: | |
# Wait for the first worker to exit. They should never exit! | |
# Once first is dead, kill the others and exit with error code. | |
pid, xx = os.wait() | |
worker_pids.remove(pid) | |
finally: | |
for pid in worker_pids: | |
os.kill(pid, signal.SIGINT) | |
exit(1) |
ctrl+C
doesn't close the server. The server only closes on container exit. Any help?
@phacic Are u using it in a container?
If you're using it on a container, remember to add a tty: true
to allow the KeyboardInterrupt
to be passed to the script, otherwise use exec wsgi_bjoern.py
as your entrypoint/cmd to maintain the same behavior.
@gcavalcante8808 yes, am using it in a container.
Will give it a try and let you know the results. Thanks
Amazing ))) 17K PRS on M1 laptop using Bjoern and 400RPS with 50% of "connection interrupt" and timeouts with Gunicorn )))
i havent seen this server as option between others (gunic, uwsgi...), has someone used it in production ?
@lyf2000 I have used it 3 years ago with success. I didnt know how it goes in these days since I've been working with java and php lately =(
Put
wsgi_bjoern.py
in your django application root, adjust line 7 and usepython wsgi_bjoern.py
to start your django app.Are you running with Bjoern on Kubernetes along with Django?
Yeah, just be sure to put and NGINX on front of django containers and that's it.