raw-wsgi.py 974 B

12345678910111213141516171819202122232425262728293031323334353637383940
  1. from socketify import WSGI
  2. import os
  3. try:
  4. from ujson import dumps as json
  5. except:
  6. from json import dumps as json
  7. def app(environ, start_response):
  8. path = environ["PATH_INFO"]
  9. if path == "/plaintext":
  10. start_response('200 OK', [('Content-Type', 'text/plain')])
  11. yield b'Hello, World!'
  12. return
  13. if path == "/json":
  14. start_response('200 OK', [('Content-Type', 'application/json')])
  15. yield json({"message":"Hello, World!"}).encode('utf8')
  16. return
  17. def run_app():
  18. WSGI(app).listen(3000, lambda config: print(f"Listening on port http://localhost:{config.port} now\n")).run()
  19. def create_fork():
  20. n = os.fork()
  21. # n greater than 0 means parent process
  22. if not n > 0:
  23. run_app()
  24. def get_worker_count():
  25. try:
  26. return int(os.environ["WORKER_COUNT"])
  27. except:
  28. return 2
  29. WORKER_COUNT = get_worker_count() - 1
  30. for index in range(WORKER_COUNT):
  31. create_fork()
  32. run_app()