Exemple #1
0
    def run(self, fname, *args, **kwargs):
        while True:
            try:
                self._flock = os.open(self._lock,
                                      os.O_CREAT | os.O_EXCL | os.O_WRONLY)
                log.info("SafeHDF:%s lock:%s" % (self._lock, self._flock))
                break
            # except FileExistsError:
#            except FileExistsError as e:
# except (IOError, EOFError, Exception) as e:
            except (IOError, OSError) as e:
                # time.sleep(probe_interval)
                log.error("IOError Error:%s" % (e))
                if self.countlock <= 10:
                    time.sleep(random.randint(1, 3))
                    # time.sleep(random.randint(0,5))
                    self.countlock += 1
                else:
                    os.remove(self._lock)
                    # time.sleep(random.randint(15, 30))
                    log.error("count10 remove lock")


#            except (Exception) as e:
#                print ("Exception Error:%s"%(e))
#                log.info("safeHDF Except:%s"%(e))
#                time.sleep(probe_interval)
#                return None
# HDFStore.__init__(self, fname, *args, **kwargs)
        HDFStore.__init__(self, fname, *args, **kwargs)
Exemple #2
0
    def __init__(self, *args, **kwargs):
        probe_interval = kwargs.pop("probe_interval", 0.01)
        self._lock = "%s.lock" % args[0]
        while True:
            try:
                self._flock = os.open(self._lock,
                                      os.O_CREAT | os.O_EXCL | os.O_WRONLY)
                break
            except FileExistsError:
                time.sleep(probe_interval)

        HDFStore.__init__(self, *args, **kwargs)
Exemple #3
0
    def __init__(self, *args, **kwargs):
        probe_interval = kwargs.pop("probe_interval", 1.0)
        self._lock = "%s.lock" % args[0]
        while True:
            try:
                self._flock = os.open(self._lock, os.O_CREAT |
                                                  os.O_EXCL |
                                                  os.O_WRONLY)
                break
            except FileExistsError:
                time.sleep(probe_interval)

        HDFStore.__init__(self, *args, **kwargs)
Exemple #4
0
    def __init__(self, *args, **kwargs):
        probe_interval = kwargs.pop("probe_interval", 1)
        self._lock = "%s.lock" % args[0]
        while True:
            try:
                self._flock = os.open(self._lock, os.O_CREAT | os.O_EXCL | os.O_WRONLY)
                break
            except OSError as e:
                if e.errno == errno.EEXIST:
                    time.sleep(probe_interval)
                else:
                    raise e

        HDFStore.__init__(self, *args, **kwargs)
Exemple #5
0
    def __init__(self, *args, **kwargs):
        if IS_PARALLEL:
            if len(args) < 1 or len(args[0]) == 0:
                raise ValueError("The first parameter should be database name")

            self._db_name = args[0]
            probe_interval = kwargs.pop("probe_interval", 0.5)
            self._lock = "%s.lock" % args[0]
            while True:
                try:
                    # print('[{}] Waiting for lock ...'.format(self._db_name))
                    self._flock = os.open(self._lock,
                                          os.O_CREAT | os.O_EXCL | os.O_WRONLY)
                    break
                except FileExistsError:
                    time.sleep(probe_interval)

        HDFStore.__init__(self, *args, **kwargs)
Exemple #6
0
    def run(self, fname, *args, **kwargs):
        while True:
            try:
                self._flock = os.open(self._lock, os.O_CREAT | os.O_EXCL)
                # self._lock, os.O_CREAT | os.O_EXCL | os.O_WRONLY)
                log.info("SafeHDF:%s lock:%s" % (self._lock, self._flock))
                break
            # except FileExistsError:
#            except FileExistsError as e:
            except (IOError, EOFError, Exception) as e:
                # except (IOError, OSError) as e:
                # time.sleep(probe_interval)
                # import ipdb;ipdb.set_trace()
                # os.unlink(self._lock)
                # os.remove(self._lock)
                if self.countlock > 1:
                    log.error("IOError Error:%s" % (e))

                if self.countlock <= 8:
                    time.sleep(round(random.randint(3, 10) / 1.2, 2))
                    # time.sleep(random.randint(0,5))
                    self.countlock += 1
                else:
                    # os.close(self._flock)
                    # os.unlink(self._lock)
                    os.remove(self._lock)
                    # time.sleep(random.randint(15, 30))
                    log.error("count10 remove lock")
            except WindowsError:
                log.error('WindowsError')
            finally:
                pass


#            except (Exception) as e:
#                print ("Exception Error:%s"%(e))
#                log.info("safeHDF Except:%s"%(e))
#                time.sleep(probe_interval)
#                return None
# HDFStore.__init__(self, fname, *args, **kwargs)
        HDFStore.__init__(self, path=fname, *args, **kwargs)
# !/usr/bin/env python