Example #1
0
 def _run_admin_script_in_background(self, action):
     if not os.path.exists(self.config.gearman_admin_script):
         raise UserError(errors[ERR_NO_GEARMAN_SCRIPT], msg_args={"file": self.config.gearman_admin_script})
     prog_and_args = [self.config.gearman_admin_script, action]
     try:
         iuprocess.run_server(
             prog_and_args, {}, os.path.join(self.config.log_dir, "gearman_%s.log" % action), logger
         )
     except iuprocess.ServerStartupError, e:
         logger.exception("Gearman startup failed: %s" % e)
         raise UserError(
             errors[ERR_GEARMAN_SCRIPT_FAILED],
             msg_args={"action": action},
             developer_msg="script %s (run in background), error was %s" % (self.config.gearman_admin_script, e),
         )
Example #2
0
def test_run_server():
    """Tests of run_server(), check_server_status,
       and stop_server_process()
    """
    logger.debug("test_run_server() Starting")
    if server_log_dir:
        td = server_log_dir
        if not os.path.exists(server_log_dir):
            os.makedirs(server_log_dir)
    else:
        td = tempfile.mkdtemp(prefix="test_run_server")
    try:
        pidfile = os.path.join(td, "server.pid")
        logger.debug("pidfile=%s" % pidfile)
        cwd = os.path.abspath(os.path.dirname(__file__))
        process.run_server([sys.executable,
                            os.path.abspath(__file__), "--run-server"],
                           {}, os.path.join(td, "server.log"),
                           logger, pidfile,
                           cwd=cwd)
        found = False
        for i in range(5):
            pid = process.check_server_status(pidfile, logger, "test")
            if pid!=None:
                logger.info("Verified that server started. Pid is %d" % pid)
                found = True
                break
            else:
                time.sleep(5)
        _assert(found, "Test server processs not found after 25 seconds")
        process.stop_server_process(pidfile, logger, "test")
        found = True
        for i in range(5):
            pid = process.check_server_status(pidfile, logger, "test")
            if pid==None:
                logger.info("Verified that server stopped")
                found = False
                break
            else:
                time.sleep(5)
        _assert(not found, "Test server processs not stopped after 25 seconds")
            
    finally:
        if not server_log_dir:
            shutil.rmtree(td)
    logger.debug("test_run_server() Successful")
Example #3
0
 def run_admin_command_as_background_task(self, command, arglist,
                                          logfile, pidfile, cwd=None):
     """Start an admin command as an ongoing background task
     """
     prog_and_args = [self.django_admin_py, command] + arglist
     if not cwd:
         cwd = self.settings_file_directory
     try:
         iuprocess.run_server(prog_and_args,
                              self.get_django_env_vars(),
                              logfile, logger, pidfile_name=pidfile,
                              cwd=cwd)
     except iuprocess.ServerStartupError, e:
         logger.exception("Error in startup of django admin command %s: %s" %
                          (command, e))
         raise UserError(errors[ERR_DJANGO_BACKGROUND_ADMIN_CMD_FAILED],
                         msg_args={"cmd":' '.join([command]+arglist)},
                         developer_msg="error was %s, PYTHONPATH was %s, DJANGO_SETTINGS_MODULE was %s, current working directory was %s" %
                         (e, self.get_python_path_director(),
                          self.deployed_settings_module, cwd))