Exemplo n.º 1
0
    def run(self):
        """
        Pool runner

        :See: `wtf.opi.worker.WorkerPoolInterface`
        """
        model, prerun, self.prerun = self.model, self.prerun, None
        impl = _impl.factory(model.config, model.opts, model.args)
        app = _app.factory(model.config, model.opts, model.args)
        try:
            accept, handle, flags = self.sock.accept, impl.handle, Flags()
            if prerun is not None:
                prerun()

            while True:
                try:
                    handle(accept(), app.call, flags)
                except (SystemExit, KeyboardInterrupt, _opi.OPIDone):
                    raise
                except:
                    print >> _sys.stderr, \
                        "Exception caught in single worker:\n" + ''.join(
                            _traceback.format_exception(*_sys.exc_info())
                        )
        finally:
            app.shutdown()
Exemplo n.º 2
0
Arquivo: init.py Projeto: ndparker/wtf
def managed_app(configfile):
    """
    Create a managed application

    :Parameters:
      `configfile` : ``str``
        Config file name

    :Return: Application factory
    :Rtype: callable
    """
    from wtf import app as _app

    return _app.factory(config(configfile), None, None)
Exemplo n.º 3
0
    def run(self):
        """
        Pool runner

        :See: `wtf.opi.worker.WorkerPoolInterface`
        """
        # pylint: disable = R0912

        oldpid, self._pid = self._pid, None
        prerun, self.prerun = self.prerun, None
        parent_cleanup, self.parent_cleanup = self.parent_cleanup, None
        self._pid = _os.fork()
        if self._pid == 0: # child
            try:
                try:
                    if self._usergroup:
                        _osutil.change_identity(*self._usergroup)
                    _signal.signal(_signal.SIGINT, _signal.SIG_IGN)
                    _signal.signal(_signal.SIGHUP, _signal.SIG_IGN)
                    if self.child_cleanup is not None:
                        self.child_cleanup()

                    model = self.model
                    config, opts, args = model.config, model.opts, model.args
                    reload_checker = _reload.Autoreload(config, opts, args)
                    impl = _impl.factory(config, opts, args)
                    app = _app.factory(config, opts, args)

                    try:
                        pool = ThreadPool(
                            self, reload_checker, impl, app.call
                        )
                        if prerun is not None:
                            prerun()
                        pool.run()
                    finally:
                        app.shutdown()
                except SystemExit, e:
                    _os._exit(e.code or 0) # pylint: disable = W0212
                except:
                    _traceback.print_exc()
                    _os._exit(1) # pylint: disable = W0212
            finally:
Exemplo n.º 4
0
def managed_app(configfile):
    """ Create a managed application """
    from wtf import app as _app
    return _app.factory(config(configfile), None, None)