setup_redis.py 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  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. "nimrod c --threads:on -d:release -d:redis_model --path:../installs/nawak/nawak -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. subprocess.Popen("./nawak_redis", shell=True, cwd="nawak", stderr=errfile, stdout=logfile)
  21. return 0
  22. def stop(logfile, errfile):
  23. ret = 0
  24. try:
  25. subprocess.check_call("sudo m2sh stop -every", shell=True, cwd="nawak/conf", stderr=errfile, stdout=logfile)
  26. except:
  27. ret = 1
  28. p = subprocess.Popen(['ps', 'aux'], stdout=subprocess.PIPE)
  29. out, err = p.communicate()
  30. for line in out.splitlines():
  31. if 'nawak_redis' in line:
  32. try:
  33. pid = int(line.split(None, 2)[1])
  34. os.kill(pid, 15)
  35. except OSError:
  36. ret = 1
  37. return ret