当前位置: 首页>>代码示例>>Python>>正文


Python Worker.setup方法代码示例

本文整理汇总了Python中worker.Worker.setup方法的典型用法代码示例。如果您正苦于以下问题:Python Worker.setup方法的具体用法?Python Worker.setup怎么用?Python Worker.setup使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在worker.Worker的用法示例。


在下文中一共展示了Worker.setup方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。

示例1: main

# 需要导入模块: from worker import Worker [as 别名]
# 或者: from worker.Worker import setup [as 别名]
def main(argv=sys.argv[1:]):
    global worker_obj
    usage = "%prog [options] start|stop|status|version (defaults to start)"
    parser = OptionParser(usage=usage)
    parser.add_option("-f", "--foreground", dest="foreground", default=False,
                      action="store_true",
                      help="If specified, run worker in the foreground instead of daemonizing")
    parser.add_option("-l", "--log-dir", dest="log_dir", default="~/djm/log",
                      help="Directory to use for log and pid files (defaults to ~/djm/log)")
    parser.add_option("--pid-file", dest="pid_file", default=None,
                      help="File to store pid information (defaults to <log_dir>/worker.pid)")
    parser.add_option("--port", default=DEFAULT_WORKER_PORT, type=int,
                      help="Port to listen for requests (defaults to %d)"%
                           DEFAULT_WORKER_PORT)
    parser.add_option("--restart", default=False, action="store_true",
                      help="If already running, force a restart to ensure settings are used")
    parser.add_option("--log-main", default=False, action="store_true",
                      help="If specified, log main program details to worker_main.log")
    (options, args) = parser.parse_args(argv)

    # setup logging
    log_dir = os.path.abspath(os.path.expanduser(options.log_dir))
    if not os.path.exists(log_dir):
        os.makedirs(log_dir)
    root_logger = logging.getLogger()
    if len(root_logger.handlers)==0:
        # we only mess with the root logger if there isn't already
        # handlers
        root_logger.setLevel(logging.DEBUG)
        console_handler = logging.StreamHandler(sys.stdout)
        console_handler.setLevel(logging.INFO)
        root_logger.addHandler(console_handler)
    if options.log_main:
        handler = logging.FileHandler(os.path.join(log_dir, "worker_main.log"))
        handler.setLevel(logging.DEBUG)
        root_logger.addHandler(handler)
    logger.debug("Running worker_main with command line %s" % argv)
        

    if options.pid_file:
        pid_file = os.path.abspath(os.path.expanduser(options.pid_file))
    else:
        pid_file = os.path.join(log_dir, "worker.pid")

    if len(args)==0:
        cmd = "start"
    elif len(args)>1:
        parser.error("Too many arguments")
    else:
        cmd = args[0]

    VALID_COMMANDS = ["start", "stop", "status", "version"]
    if cmd not in VALID_COMMANDS:
        parser.error("Command must be one of %s" % VALID_COMMANDS)

    if cmd!="start" and options.restart:
        parser.error("--restart option only valid for start command")

    if cmd=="stop":
        return stop(pid_file)
    elif cmd=="status":
        pid = get_daemon_pid(pid_file)
        if not pid:
            return 1
        else:
            logger.info("Worker process %d is running" % pid)
            return 0
    elif cmd=="version":
        logger.info("%s" % version.VERSION)
        return 0

    # otherwise we are starting the worker
    if os.path.exists(pid_file) and lockfile.FileLock(pid_file).is_locked():
        logger.info("Pid file %s is locked - daemon is already running" %
                    pid_file)
        if options.restart:
            rc = stop(pid_file)
            if rc!=0:
                return rc
            logger.info("Will now start new worker")
        else:
            return 0

    if not os.path.exists(log_dir):
        os.makedirs(log_dir)

    if options.foreground:
        lock = lockfile.FileLock(pid_file)
        with lock:
            worker_obj = Worker(log_dir, pid_file,
                                port=options.port,
                                running_in_fg=True)
            worker_obj.setup()
            signal.signal(signal.SIGTERM, terminate)
            logger.info("running in Foreground")
            return worker_obj.run()
    else:
        logger.info("Daemonizing, pid file will be at %s, port is %d" % \
                    (pid_file, options.port))
        with daemon.DaemonContext(signal_map=signal_map,
#.........这里部分代码省略.........
开发者ID:quaddra,项目名称:dist_job_mgr,代码行数:103,代码来源:worker_main.py


注:本文中的worker.Worker.setup方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。