diff --git a/pywb/recorder/warcwriter.py b/pywb/recorder/warcwriter.py index 31768d8f..5f26ee24 100644 --- a/pywb/recorder/warcwriter.py +++ b/pywb/recorder/warcwriter.py @@ -16,7 +16,7 @@ from collections import OrderedDict from socket import gethostname from io import BytesIO -import fcntl +import portalocker from pywb.utils.loaders import LimitReader, to_native_str from pywb.utils.bufferedreaders import BufferedReader @@ -384,7 +384,7 @@ class MultiFileWARCWriter(BaseWARCWriter): def _close_file(self, fh): try: - fcntl.flock(fh, fcntl.LOCK_UN) + portalocker.lock(fh, portalocker.LOCK_UN) fh.close() except Exception as e: print(e) @@ -494,7 +494,7 @@ class MultiFileWARCWriter(BaseWARCWriter): self.fh_cache.pop(dir_key, None) elif is_new: - fcntl.flock(out, fcntl.LOCK_EX | fcntl.LOCK_NB) + portalocker.lock(out, portalocker.LOCK_EX | portalocker.LOCK_NB) self.fh_cache[dir_key] = (out, filename) def iter_open_files(self): diff --git a/setup.py b/setup.py index c2006778..9848abb9 100755 --- a/setup.py +++ b/setup.py @@ -87,6 +87,7 @@ setup( 'webencodings', 'gevent==1.1.2', 'webassets==0.12.0', + 'portalocker' #'pyamf' ], dependency_links=[