The FileOpener now creates a lock file. #350
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
When entering the FileOpener context manager, a file lock is now created with the following filename structure " ~<file_name>.lock". All of the functions in the datadict_storage.py module use the FileOpener internally.
All of the functions that use the FileOpener now also have a new argument file_timeout to pass a different amount of time for the timeout of a lock file. This is because in my testing when files start to get big, sometimes a writer or reader takes longer than the timeout time, making the program crash.
I have also created a simple test that tests if the FileOpener creates the lock file, crashes program and checks if the lock file is still being deleted afterwards. I wasn't sure what else add to the unit tests.
As a little convenience bonus, all of the storage functions now accept both str and Path instead of just str and converting them to Path in the function.