def ensure_zeo_is_running(event): """We start zeo after the application has performed the basic initialization because we cannot import opennode.oms.zodb.db until all grokkers are run in the correct order. """ if get_config().get('db', 'storage_type') != 'zeo': return log.msg("Ensuring ZEO is running", system='db') # prevent zeo starting during unit tests etc global _daemon_started if not _daemon_started: return from opennode.oms.zodb.db import get_db_dir db_dir = get_db_dir() from zc.lockfile import LockFile, LockError try: with closing(LockFile(os.path.join(db_dir, 'data.fs.lock'))): log.msg("Starting ZEO server", system='db') run_zeo(db_dir) except LockError: log.msg("ZEO is already running", system='db')
def lock_instance(): try: lock = LockFile('file_syncer.lock') except LockError: print('Can not run multiple instance of this script. Try it later! :)') exit() yield lock.close()
def process_conversion_queue(self): """process the queue. """ try: lock = LockFile(LOCKFILE_NAME) except LockError: return "`process_conversion_queue` is locked by another process (%r)." % ( LOCKFILE_NAME) try: return self._process_conversion_queue() finally: lock.close()
def process_conversion_queue(self): """process the queue. """ try: lock = LockFile(LOCKFILE_NAME) except LockError: return '`process_conversion_queue` is locked by another ' + \ 'process ({0}).'.format(LOCKFILE_NAME) try: return self._process_conversion_queue() finally: lock.close()
def process_conversion_queue(self): """process the queue. """ if HAS_PLONE_PROTECT: # Disabling CSRF protection alsoProvides(self.request, IDisableCSRFProtection) try: lock = LockFile(LOCKFILE_NAME) except LockError: return '`process_conversion_queue` is locked by another ' + \ 'process ({0}).'.format(LOCKFILE_NAME) try: return self._process_conversion_queue() finally: lock.close()
async def start_can(self): """Starts the JaegerCAN interface.""" use_lock = config["fps"]["use_lock"] if use_lock and self.pid_lock is None: try: if not os.path.exists(os.path.dirname(LOCK_FILE)): os.makedirs(os.path.dirname(LOCK_FILE)) self.pid_lock = LockFile(LOCK_FILE) except Exception: raise JaegerError( f"Failed creating lock file {LOCK_FILE}. " "Probably another instance is running. " "If that is not the case, remove the lock file and retry.") if isinstance(self.can, JaegerCAN): await self.can.start() return self.can = await JaegerCAN.create(self.can, fps=self) return True
QtGui.QGuiApplication.setAttribute(QtCore.Qt.AA_EnableHighDpiScaling) MiscUtils.configure_logging() log_queue = Manager().Queue() logger_thread = threading.Thread(target=MiscUtils.logger_thread_exec, args=(log_queue, )) logger_thread.start() app = QtWidgets.QApplication(sys.argv) app.setWindowIcon(QtGui.QIcon(MiscUtils.get_app_icon_path())) app.setApplicationDisplayName( "Batch Media Compressor") # TODO test + add org / ver app.setQuitOnLastWindowClosed(False) try: lock = LockFile(MiscUtils.get_lock_file_path()) tray_icon = TrayIcon(log_queue) tray_icon.show() return_code = app.exec_() tray_icon.cleanup() lock.close() except LockError: error_msg = "Cannot acquire lock on file {}.\n\nAnother instance of the application is probably running.".format( MiscUtils.get_lock_file_path()) logging.fatal(error_msg) QtWidgets.QMessageBox.critical(None, "Fatal Error", error_msg, QtWidgets.QMessageBox.Ok) return_code = -1 logging.info("Application is being shutdown") log_queue.put(None)