app.py 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. import threading
  2. import time
  3. import os
  4. from datetime import datetime
  5. from socketify import App
  6. def plaintext(res, req):
  7. res.write_header("Server", "socketify")
  8. res.write_header("Content-Type", "text/plain")
  9. res.end("Hello, World!")
  10. def applicationjson(res, req):
  11. res.write_header("Server", "socketify")
  12. res.end({"message":"Hello, World!"})
  13. def run_app():
  14. app = App(request_response_factory_max_itens=200_000)
  15. app.get("/", plaintext)
  16. app.get("/json", applicationjson)
  17. app.get("/plaintext", plaintext)
  18. app.listen(3000, None)
  19. app.run()
  20. def create_fork():
  21. n = os.fork()
  22. # n greater than 0 means parent process
  23. if not n > 0:
  24. run_app()
  25. def get_worker_count():
  26. try:
  27. return int(os.environ["WORKER_COUNT"])
  28. except:
  29. return 2
  30. WORKER_COUNT = get_worker_count() - 1
  31. for index in range(WORKER_COUNT):
  32. create_fork()
  33. run_app()
  34. #sudo ./tfb --mode benchmark --test socketify.py --type plaintext
  35. #sudo ./tfb --mode benchmark --test socketify.py --type json --network=tfb
  36. # 770k with timer + agressive cpu
  37. # 851k without timer
  38. # ???k with timer + relaxed cpu