setup_pypy.py 827 B

123456789101112131415161718192021222324252627282930313233343536373839
  1. import subprocess
  2. import os
  3. import time
  4. proc = None
  5. def start(args, logfile, errfile):
  6. global proc
  7. proc = subprocess.Popen(
  8. "exec $PYPY_GUNICORN app:app -c gunicorn_conf.py",
  9. cwd="flask", stderr=errfile, stdout=logfile, shell=True)
  10. return 0
  11. def stop(logfile, errfile):
  12. global proc
  13. if proc is None:
  14. return 0
  15. proc.terminate()
  16. for _ in range(10):
  17. if proc.poll() is not None:
  18. break
  19. time.sleep(0.2)
  20. if proc.poll() is None:
  21. proc.kill()
  22. proc = None
  23. p = subprocess.Popen(['ps', 'aux'], stdout=subprocess.PIPE)
  24. out, err = p.communicate()
  25. for line in out.splitlines():
  26. if 'gunicorn' in line:
  27. errfile.write("Killing: " + line + "\n")
  28. pid = int(line.split()[1])
  29. os.kill(pid, 15)
  30. return 0