app.py 1.2 KB

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