Beispiel #1
0
    def restart(self, forced=False):
        from calibre.utils.rapydscript import CompileFailure, compile_srv
        self.clean_kill()
        if forced:
            self.retry_count += 1
        else:
            self.retry_count = 0
        try:
            compile_srv()
        except OSError as e:
            # Happens if the editor deletes and replaces a file being edited
            if e.errno != errno.ENOENT or not getattr(e, 'filename', False):
                raise
            st = monotonic()
            while not os.path.exists(e.filename) and monotonic() - st < 3:
                time.sleep(0.01)
            compile_srv()
        except CompileFailure as e:
            self.log.error(error_message(e))
            time.sleep(0.1 * self.retry_count)
            if self.retry_count < MAX_RETRIES and self.wakeup is not None:
                self.wakeup()  # Force a restart
            return

        self.retry_count = 0
        self.p = subprocess.Popen(self.cmd,
                                  creationflags=getattr(
                                      subprocess, 'CREATE_NEW_PROCESS_GROUP',
                                      0))
        self.wait_for_listen()
        self.server.notify_reload()
Beispiel #2
0
 def __init__(self, libraries, opts):
     log = access_log = None
     log_size = opts.max_log_size * 1024 * 1024
     if opts.log:
         log = RotatingLog(opts.log, max_size=log_size)
     if opts.access_log:
         access_log = RotatingLog(opts.access_log, max_size=log_size)
     self.handler = Handler(libraries, opts)
     if opts.custom_list_template:
         with lopen(os.path.expanduser(opts.custom_list_template), 'rb') as f:
             self.handler.router.ctx.custom_list_template = json.load(f)
     if opts.search_the_net_urls:
         with lopen(os.path.expanduser(opts.search_the_net_urls), 'rb') as f:
             self.handler.router.ctx.search_the_net_urls = json.load(f)
     plugins = []
     if opts.use_bonjour:
         plugins.append(BonJour(wait_for_stop=max(0, opts.shutdown_timeout - 0.2)))
     self.loop = ServerLoop(
         create_http_handler(self.handler.dispatch),
         opts=opts,
         log=log,
         access_log=access_log,
         plugins=plugins)
     self.handler.set_log(self.loop.log)
     self.handler.set_jobs_manager(self.loop.jobs_manager)
     self.serve_forever = self.loop.serve_forever
     self.stop = self.loop.stop
     if is_running_from_develop:
         from calibre.utils.rapydscript import compile_srv
         compile_srv()
Beispiel #3
0
    def restart(self, forced=False):
        from calibre.utils.rapydscript import compile_srv, CompileFailure
        self.clean_kill()
        if forced:
            self.retry_count += 1
        else:
            self.retry_count = 0
        try:
            compile_srv()
        except EnvironmentError as e:
            # Happens if the editor deletes and replaces a file being edited
            if e.errno != errno.ENOENT or not getattr(e, 'filename', False):
                raise
            st = monotonic()
            while not os.path.exists(e.filename) and monotonic() - st < 3:
                time.sleep(0.01)
            compile_srv()
        except CompileFailure as e:
            self.log.error(e.message)
            time.sleep(0.1 * self.retry_count)
            if self.retry_count < MAX_RETRIES and self.wakeup is not None:
                self.wakeup()  # Force a restart
            return

        self.retry_count = 0
        self.p = subprocess.Popen(self.cmd, creationflags=getattr(subprocess, 'CREATE_NEW_PROCESS_GROUP', 0))
        self.wait_for_listen()
        self.server.notify_reload()
Beispiel #4
0
 def serve_forever(self):
     self.exception = None
     from calibre.srv.content import reset_caches
     try:
         if is_running_from_develop:
             from calibre.utils.rapydscript import compile_srv
             compile_srv()
     except BaseException as e:
         self.exception = e
         if self.start_failure_callback is not None:
             try:
                 self.start_failure_callback(as_unicode(e))
             except Exception:
                 pass
         return
     if self.state_callback is not None:
         try:
             self.state_callback(True)
         except Exception:
             pass
     reset_caches()  # we reset the cache as the server tdir has changed
     try:
         self.loop.serve_forever()
     except BaseException as e:
         self.exception = e
     if self.state_callback is not None:
         try:
             self.state_callback(False)
         except Exception:
             pass
Beispiel #5
0
 def serve_forever(self):
     self.exception = None
     from calibre.srv.content import reset_caches
     try:
         if is_running_from_develop:
             from calibre.utils.rapydscript import compile_srv
             compile_srv()
     except BaseException as e:
         self.exception = e
         if self.start_failure_callback is not None:
             try:
                 self.start_failure_callback(as_unicode(e))
             except Exception:
                 pass
         return
     if self.state_callback is not None:
         try:
             self.state_callback(True)
         except Exception:
             pass
     reset_caches()  # we reset the cache as the server tdir has changed
     try:
         self.loop.serve_forever()
     except BaseException as e:
         self.exception = e
     if self.state_callback is not None:
         try:
             self.state_callback(False)
         except Exception:
             pass
Beispiel #6
0
 def __init__(self, libraries, opts):
     log = access_log = None
     log_size = opts.max_log_size * 1024 * 1024
     if opts.log:
         log = RotatingLog(opts.log, max_size=log_size)
     if opts.access_log:
         access_log = RotatingLog(opts.access_log, max_size=log_size)
     self.handler = Handler(libraries, opts)
     if opts.custom_list_template:
         with lopen(opts.custom_list_template, 'rb') as f:
             self.handler.router.ctx.custom_list_template = json.load(f)
     plugins = []
     if opts.use_bonjour:
         plugins.append(BonJour())
     self.loop = ServerLoop(
         create_http_handler(self.handler.dispatch),
         opts=opts,
         log=log,
         access_log=access_log,
         plugins=plugins)
     self.handler.set_log(self.loop.log)
     self.handler.set_jobs_manager(self.loop.jobs_manager)
     self.serve_forever = self.loop.serve_forever
     self.stop = self.loop.stop
     if is_running_from_develop:
         from calibre.utils.rapydscript import compile_srv
         compile_srv()
Beispiel #7
0
 def run(self, opts):
     from calibre.utils.rapydscript import compile_srv, compile_editor, compile_viewer
     if opts.only_module:
         locals()['compile_' + opts.only_module]()
     else:
         compile_editor()
         compile_viewer()
         compile_srv()
Beispiel #8
0
 def restart(self):
     from calibre.utils.rapydscript import compile_srv
     self.clean_kill()
     compile_srv()
     self.p = subprocess.Popen(self.cmd,
                               creationflags=getattr(
                                   subprocess, 'CREATE_NEW_PROCESS_GROUP',
                                   0))
Beispiel #9
0
 def restart(self):
     from calibre.utils.rapydscript import compile_srv
     self.clean_kill()
     try:
         compile_srv()
     except EnvironmentError as e:
         # Happens if the editor deletes and replaces a file being edited
         if e.errno != errno.ENOENT or not getattr(e, 'filename', False):
             raise
         st = time.time()
         while not os.path.exists(e.filename) and time.time() - st < 3:
             time.sleep(0.01)
         compile_srv()
     self.p = subprocess.Popen(self.cmd, creationflags=getattr(subprocess, 'CREATE_NEW_PROCESS_GROUP', 0))
Beispiel #10
0
 def __init__(self, libraries, opts):
     log = None
     if opts.log:
         log = RotatingLog(opts.log, max_size=opts.max_log_size)
     self.handler = Handler(libraries, opts)
     plugins = []
     if opts.use_bonjour:
         plugins.append(BonJour())
     self.loop = ServerLoop(create_http_handler(self.handler.dispatch), opts=opts, log=log, plugins=plugins)
     self.handler.set_log(self.loop.log)
     self.serve_forever = self.loop.serve_forever
     self.stop = self.loop.stop
     _df = os.environ.get('CALIBRE_DEVELOP_FROM', None)
     if _df and os.path.exists(_df):
         from calibre.utils.rapydscript import compile_srv
         compile_srv()
Beispiel #11
0
 def __init__(self, libraries, opts):
     log = None
     if opts.log:
         log = RotatingLog(opts.log, max_size=opts.max_log_size)
     self.handler = Handler(libraries, opts)
     plugins = []
     if opts.use_bonjour:
         plugins.append(BonJour())
     self.loop = ServerLoop(create_http_handler(self.handler.dispatch),
                            opts=opts,
                            log=log,
                            plugins=plugins)
     self.handler.set_log(self.loop.log)
     self.serve_forever = self.loop.serve_forever
     self.stop = self.loop.stop
     _df = os.environ.get('CALIBRE_DEVELOP_FROM', None)
     if _df and os.path.exists(_df):
         from calibre.utils.rapydscript import compile_srv
         compile_srv()
Beispiel #12
0
 def __init__(self, libraries, opts):
     log = access_log = None
     log_size = opts.max_log_size * 1024 * 1024
     if opts.log:
         log = RotatingLog(opts.log, max_size=log_size)
     if opts.access_log:
         access_log = RotatingLog(opts.access_log, max_size=log_size)
     self.handler = Handler(libraries, opts)
     plugins = []
     if opts.use_bonjour:
         plugins.append(BonJour())
     self.loop = ServerLoop(create_http_handler(self.handler.dispatch),
                            opts=opts,
                            log=log,
                            access_log=access_log,
                            plugins=plugins)
     self.handler.set_log(self.loop.log)
     self.handler.set_jobs_manager(self.loop.jobs_manager)
     self.serve_forever = self.loop.serve_forever
     self.stop = self.loop.stop
     if is_running_from_develop:
         from calibre.utils.rapydscript import compile_srv
         compile_srv()
Beispiel #13
0
 def __init__(self, library_broker, notify_changes):
     opts = server_config()
     lp, lap = log_paths()
     try:
         os.makedirs(cache_dir())
     except EnvironmentError as err:
         if err.errno != errno.EEXIST:
             raise
     log_size = opts.max_log_size * 1024 * 1024
     log = RotatingLog(lp, max_size=log_size)
     access_log = RotatingLog(lap, max_size=log_size)
     self.handler = Handler(library_broker,
                            opts,
                            notify_changes=notify_changes)
     plugins = self.plugins = []
     if opts.use_bonjour:
         plugins.append(BonJour())
     self.opts = opts
     self.log, self.access_log = log, access_log
     self.handler.set_log(self.log)
     _df = os.environ.get('CALIBRE_DEVELOP_FROM', None)
     if _df and os.path.exists(_df):
         from calibre.utils.rapydscript import compile_srv
         compile_srv()
Beispiel #14
0
 def run(self, opts):
     from calibre.utils.rapydscript import compile_srv
     compile_srv()
Beispiel #15
0
 def run(self, opts):
     from calibre.utils.rapydscript import compile_srv
     compile_srv()
Beispiel #16
0
 def restart(self):
     from calibre.utils.rapydscript import compile_srv
     self.clean_kill()
     compile_srv()
     self.p = subprocess.Popen(self.cmd, creationflags=getattr(subprocess, 'CREATE_NEW_PROCESS_GROUP', 0))