Use portalocker to lock files that are being copied by spinal.
parent
e275cbaef1
commit
1a19d608c6
3
setup.py
3
setup.py
|
@ -11,9 +11,10 @@ setuptools.setup(
|
||||||
long_description_content_type='text/markdown',
|
long_description_content_type='text/markdown',
|
||||||
url='https://github.com/voussoir/voussoirkit',
|
url='https://github.com/voussoir/voussoirkit',
|
||||||
install_requires=[
|
install_requires=[
|
||||||
|
'exifread',
|
||||||
|
'portalocker',
|
||||||
'pyperclip',
|
'pyperclip',
|
||||||
'python-dateutil',
|
'python-dateutil',
|
||||||
'exifread',
|
|
||||||
'pywin32;platform_system=="Windows"',
|
'pywin32;platform_system=="Windows"',
|
||||||
'winshell;platform_system=="Windows"',
|
'winshell;platform_system=="Windows"',
|
||||||
]
|
]
|
||||||
|
|
|
@ -5,6 +5,10 @@ copying files and folders.
|
||||||
import collections
|
import collections
|
||||||
import hashlib
|
import hashlib
|
||||||
import os
|
import os
|
||||||
|
try:
|
||||||
|
import portalocker
|
||||||
|
except ImportError:
|
||||||
|
portalocker = None
|
||||||
import shutil
|
import shutil
|
||||||
import time
|
import time
|
||||||
|
|
||||||
|
@ -508,6 +512,9 @@ def copy_file(
|
||||||
if dynamic_chunk_size:
|
if dynamic_chunk_size:
|
||||||
chunk_size = bytestring.MEBIBYTE
|
chunk_size = bytestring.MEBIBYTE
|
||||||
|
|
||||||
|
if portalocker is not None:
|
||||||
|
portalocker.lock(source_handle, portalocker.LockFlags.EXCLUSIVE)
|
||||||
|
|
||||||
while True:
|
while True:
|
||||||
chunk_start = time.perf_counter()
|
chunk_start = time.perf_counter()
|
||||||
|
|
||||||
|
@ -539,6 +546,9 @@ def copy_file(
|
||||||
chunk_time = time.perf_counter() - chunk_start
|
chunk_time = time.perf_counter() - chunk_start
|
||||||
chunk_size = dynamic_chunk_sizer(chunk_size, chunk_time, IDEAL_CHUNK_TIME)
|
chunk_size = dynamic_chunk_sizer(chunk_size, chunk_time, IDEAL_CHUNK_TIME)
|
||||||
|
|
||||||
|
if portalocker is not None:
|
||||||
|
portalocker.unlock(source_handle)
|
||||||
|
|
||||||
progressbar.done()
|
progressbar.done()
|
||||||
|
|
||||||
# Fin
|
# Fin
|
||||||
|
|
Loading…
Reference in New Issue