setup_redis.py 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. import subprocess
  2. import sys
  3. import setup_util
  4. import os
  5. from os.path import expanduser
  6. home = expanduser("~")
  7. def start(args, logfile, errfile):
  8. setup_util.replace_text("nawak/model_redis.nim",
  9. 'open\(host=.*\)',
  10. 'open(host="' + args.database_host + '")')
  11. # compile the app
  12. subprocess.check_call(
  13. "nim c --threads:on -d:release -d:redis_model --path:$NAWAK_PATH -o:nawak_redis app.nim",
  14. shell=True, cwd="nawak", stderr=errfile, stdout=logfile)
  15. # launch mongrel2
  16. subprocess.check_call("mkdir -p run logs tmp", shell=True, cwd="nawak/conf", stderr=errfile, stdout=logfile)
  17. subprocess.check_call("sudo m2sh load -config mongrel2.conf", shell=True, cwd="nawak/conf", stderr=errfile, stdout=logfile)
  18. subprocess.check_call("sudo m2sh start -name test", shell=True, cwd="nawak/conf", stderr=errfile, stdout=logfile)
  19. # launch workers
  20. if os.environ.get("TRAVIS"):
  21. nb_workers = 32
  22. else:
  23. nb_workers = 256
  24. subprocess.Popen("./nawak_redis " + nb_workers,
  25. shell=True, cwd="nawak", stderr=errfile, stdout=logfile)
  26. return 0
  27. def stop(logfile, errfile):
  28. ret = 0
  29. try:
  30. subprocess.check_call("sudo m2sh stop -every", shell=True, cwd="nawak/conf", stderr=errfile, stdout=logfile)
  31. except:
  32. ret = 1
  33. p = subprocess.Popen(['ps', 'aux'], stdout=subprocess.PIPE)
  34. out, err = p.communicate()
  35. for line in out.splitlines():
  36. if 'nawak_redis' in line:
  37. try:
  38. pid = int(line.split(None, 2)[1])
  39. os.kill(pid, 15)
  40. except OSError:
  41. ret = 1
  42. return ret