Ejemplo n.º 1
0
def main():
    logger.configure_logs()
    wyvern.init(os.path.dirname(__file__))

    if wyvern.CREATE_PID:
        if wyvern.DAEMON:
            pid_dir = os.path.dirname(wyvern.PID_FILE)
            if not os.access(pid_dir, os.F_OK):
                sys.exit("PID dir: " + pid_dir + " doesn't exist. Exiting.")
            if not os.access(pid_dir, os.W_OK):
                sys.exit("PID dir: " + pid_dir + " must be writable (write permissions). Exiting.")

        else:
            sys.stdout.write("Not running in daemon mode. PID file creation disabled.\n")
            wyvern.CREATEPID = False
    logger.error(wyvern.PID_FILE)
    if wyvern.DAEMON:
        daemonize()

    webinit.webinit()

    wyvern.start()

    while not wyvern.STOP_EVENT.isSet():
        time.sleep(1)
Ejemplo n.º 2
0
    try:
        pid = os.fork()  # @UndefinedVariable - only available in UNIX
        if pid != 0:
            os._exit(0)
    except OSError, e:
        sys.stderr.write("fork #2 failed: %d (%s)\n" % (e.errno, e.strerror))
        sys.exit(1)

    # Write pid
    if wyvern.CREATE_PID:
        pid = str(os.getpid())
        logger.debug(u"Writing PID: " + pid + " to " + str(wyvern.PID_FILE))
        try:
            file(wyvern.PID_FILE, 'w').write("%s\n" % pid)
        except IOError, e:
            logger.error(u"Unable to write PID file: " + wyvern.PID_FILE + " Error: " + str(e.strerror) + " [" + str(
                e.errno) + "]")
            wyvern.halt()

    # Redirect all output
    sys.stdout.flush()
    sys.stderr.flush()

    devnull = getattr(os, 'devnull', '/dev/null')
    stdin = file(devnull, 'r')
    stdout = file(devnull, 'a+')
    stderr = file(devnull, 'a+')
    os.dup2(stdin.fileno(), sys.stdin.fileno())
    os.dup2(stdout.fileno(), sys.stdout.fileno())
    os.dup2(stderr.fileno(), sys.stderr.fileno())