--- lockfile-0.8/lockfile.py 2009-03-30 12:44:14.000000000 +0200 +++ lockfile/lockfile.py 2012-10-14 14:13:27.000000000 +0200 @@ -167,14 +168,17 @@ name = threading.current_thread().get_name() tname = "%s-" % urllib.quote(name, safe="") else: tname = "" dirname = os.path.dirname(self.lock_file) - self.unique_name = os.path.join(dirname, - "%s.%s%s" % (self.hostname, - tname, - self.pid)) + basename = os.path.basename(self.lock_file) + try: + self.unique_name = os.path.join(dirname, "%s.%s.%s%s" % (basename, + self.hostname, tname, self.pid)) + except UnicodeDecodeError: + self.unique_name = os.path.join(dirname, "%s%s" % (tname, self.pid)) + def acquire(self, timeout=None): """ Acquire the lock. @@ -298,14 +302,19 @@ tname = "%x-" % thread.get_ident() else: tname = "" # Lock file itself is a directory. Place the unique file name into # it. - self.unique_name = os.path.join(self.lock_file, - "%s.%s%s" % (self.hostname, - tname, - self.pid)) + try: + self.unique_name = os.path.join(self.lock_file, + "%s.%s%s" % (self.hostname, + tname, + self.pid)) + except UnicodeDecodeError: + self.unique_name = os.path.join(self.lock_file, + "non-ascii-hostname.%s%s"% (tname, + self.pid)) def acquire(self, timeout=None): end_time = time.time() if timeout is not None and timeout > 0: end_time += timeout