Comments (4)
Hmm. I believe I have also seen that kind of error, but at the time I couldn’t determine what was causing it, probably because it was a rare occurrence in my case. I need to take another look at it, but you’re probably right concerning the possibility of this being a race condition.
Currently the temporary files are being created in the same folder that has the original file, with a prefix in the name. Maybe it needs to be set to ignore any image files whose name starts with that prefix. Or maybe the temporary file can be replaced with something in memory without disk I/O, which should be much faster and would probably solve this issue.
from optimize-images.
Looks like it's more likely to occur on fast hardware - I have 12 core CPU and NVMe SSD. I noticed that if system is under load - this is less likely to occur. Of course it would be the best not to create temp file at all. Maybe this will help: https://docs.python.org/3/library/tempfile.html#tempfile.SpooledTemporaryFile
from optimize-images.
Thank you very much for your feedback. I submitted a quick fix, just checking the presence of the temporary files prefix (~temp~
) in the filename. It should be enough to avoid the reported issue. I will keep in mind your SpooledTemporaryFile
suggestion, though.
Please let me know in case you still get any issue with this version.
from optimize-images.
Just a quick notice to let you know that, on the latest commit (not yet available in PyPI), I have implemented in-memory buffers using BytesIO, instead of in-disk temporary files. Still under testing, as the refactoring could have introduced some regression bugs.
I am still curious about any potential advantages of SpooledTemporaryFile
over BytesIO
, though.
from optimize-images.
Related Issues (20)
- skip optimization on error, don't exit process HOT 1
- log what file is raising error HOT 6
- Use imghdr.what() to detect image type from file signature in do_optimization()
- Skip non-image file types HOT 4
- AttributeError: 'NoneType' object has no attribute 'orig_size' HOT 3
- Command line icons not properly shown in Windows HOT 5
- PIL.UnidentifiedImageError: cannot identify image file HOT 6
- Keep Image resolution (DPI) HOT 3
- Allow export to format ".webp" HOT 2
- [Feature Request] Option to skip files raising exceptions. HOT 2
- Read-only file system /~temp~image.png HOT 7
- Convert png to jpg regardless of size HOT 2
- [Feature Request] Docker support HOT 10
- Brunsli support? HOT 1
- Claims Pillow isn't installed while it is? HOT 5
- Skips png's HOT 2
- Ability to Suppress Output HOT 2
- UnboundLocalError: local variable 'has_exif' referenced before assignment HOT 4
- Error with Pillow 8.2.0 and python 3.10 HOT 3
- Destroys EXIF data despite --keep-exif HOT 6
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from optimize-images.