app.py 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. import os
  2. import fastwsgi
  3. try:
  4. from ujson import dumps as jsonify
  5. except:
  6. from json import dumps as jsonify
  7. def app(environ, start_response):
  8. path = environ["PATH_INFO"]
  9. headers = [ ]
  10. #headers = [ ('Server', 'FastWSGI') ]
  11. if path == "/json":
  12. headers.append( ('Content-Type', 'application/json') )
  13. start_response('200 OK', headers)
  14. return [ jsonify( {"message":"Hello, World!"} ).encode('utf8') ]
  15. if path == "/plaintext":
  16. headers.append( ('Content-Type', 'text/plain') )
  17. start_response('200 OK', headers)
  18. return [ b'Hello, World!' ]
  19. start_response('400 Bad Request', headers)
  20. return [ b'' ]
  21. if __name__ == "__main__":
  22. import multiprocessing
  23. _is_travis = os.environ.get('TRAVIS') == 'true'
  24. workers = int(multiprocessing.cpu_count())
  25. if _is_travis:
  26. workers = 2
  27. host = '0.0.0.0'
  28. port = 3000
  29. def run_app():
  30. fastwsgi.server.backlog = 4096
  31. fastwsgi.run(app, host, port, loglevel=2)
  32. def create_fork():
  33. n = os.fork()
  34. # n greater than 0 means parent process
  35. if not n > 0:
  36. run_app()
  37. # fork limiting the cpu count - 1
  38. for i in range(1, workers):
  39. create_fork()
  40. run_app() # run app on the main process too :)