-
Notifications
You must be signed in to change notification settings - Fork 7
/
Copy pathwsgi_bjoern.py
68 lines (53 loc) · 2.45 KB
/
wsgi_bjoern.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
"""
WSGI config for Maidstone Hackspace project.
This module contains the WSGI application used by Django's development server
and any production WSGI deployments. It should expose a module-level variable
named ``application``. Django's ``runserver`` and ``runfcgi`` commands discover
this application via the ``WSGI_APPLICATION`` setting.
Usually you will have the standard Django WSGI application here, but it also
might make sense to replace the whole Django WSGI application with a custom one
that later delegates to the Django one. For example, you could introduce WSGI
middleware here, or combine a Django application with an application of another
framework.
"""
import os
import bjoern
import socket
from django.core.wsgi import get_wsgi_application
# We defer to a DJANGO_SETTINGS_MODULE already in the environment. This breaks
# if running multiple sites in the same mod_wsgi process. To fix this, use
# mod_wsgi daemon mode with each site in its own daemon process, or use
# os.environ["DJANGO_SETTINGS_MODULE"] = "config.settings.production"
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "config.settings.local")
# This application object is used by any WSGI server configured to use this
# file. This includes Django's development server, if the WSGI_APPLICATION
# setting points here.
application = get_wsgi_application()
# Apply WSGI middleware here.
# from helloworld.wsgi import HelloWorldApplication
# application = HelloWorldApplication(application)
# apply Werkzeug WSGI middleware
# if os.environ.setdefault('DJANGO_DEBUG', 'False') is True:
from werkzeug.debug import DebuggedApplication
application = DebuggedApplication(application, evalex=True, pin_security=True, pin_logging=True)
application.debug = True
# bjoern.run(application, 'unix:/data/sockets/bjoern-mhackspace.sock')
#https://stackoverflow.com/questions/46301706/bjoern-wsgi-server-unix-socket-permissions
# class ReloadApplicationMiddleware(object):
# def __call__(self, *args, **kwargs):
# print('Reloading...')
# self.app = self.import_func()
# return self.app(*args, **kwargs)
# application = ReloadApplicationMiddleware(application)
socket_path = '/data/sockets/maidstone-hackspace.sock'
if os.path.exists(socket_path):
os.unlink(socket_path)
sock = socket.socket(socket.AF_UNIX)
sock.bind(socket_path)
sock.listen(1024)
os.chmod(socket_path, 0o666)
try:
bjoern.server_run(sock, application)
except KeyboardInterrupt:
os.unlink(sock.getsockname())
sock.close()