django-socketify-wsgi.py 740 B

123456789101112131415161718192021222324252627282930313233343536
  1. import os
  2. import sys
  3. import multiprocessing
  4. import logging
  5. import socketify
  6. app_dir = os.path.dirname(os.path.abspath(__file__)) + '/hello'
  7. sys.path.append(app_dir)
  8. from hello.wsgi import application as app
  9. _is_travis = os.environ.get('TRAVIS') == 'true'
  10. workers = int(multiprocessing.cpu_count())
  11. if _is_travis:
  12. workers = 2
  13. def run_app():
  14. msg = f"Listening on port 8080 now\n"
  15. socketify.WSGI(app).listen(8080, lambda config: logging.info(msg)).run()
  16. def create_fork():
  17. n = os.fork()
  18. # n greater than 0 means parent process
  19. if not n > 0:
  20. run_app()
  21. # fork limiting the cpu count - 1
  22. for i in range(1, multiprocessing.cpu_count()):
  23. create_fork()
  24. run_app() # run app on the main process too :)