Skip to main content

Provides mdildir like access to files

Project description

The filestore is an easy way to to process files with multiple processes without needing locks.

Initialize a FileStore

Create a filestore in a temporary area:

>>> import tempfile
>>> store_dir = tempfile.mkdtemp()
>>> from gocept.filestore import FileStore
>>> filestore = FileStore(store_dir)
>>> filestore
<gocept.filestore.filestore.FileStore object at 0x...>

So far nothing has happend:

>>> import os
>>> os.listdir(store_dir)
[]

Before using the store we need to prepare it:

>>> filestore.prepare()

Prepare has created the tmp/new/cur directory structure:

>>> os.listdir(store_dir)
['cur', 'new', 'tmp']

Calling prepare again does nothing:

>>> filestore.prepare()
>>> os.listdir(store_dir)
['cur', 'new', 'tmp']

Use a FileStore

Adding files to the store works with the create method:

>>> f = filestore.create('a-file')

Files are created in the ‘tmp’ area with the ‘w’ mode (if not specified):

>>> f
<open file '.../tmp/a-file', mode 'w' at 0x...>

We find the file in the tmp area. Note that filestore.list lists files with their full path names, so we could feed the name directly to file/open:

>>> filestore.list('tmp')
['.../tmp/a-file']

We got a plain file back, so write to it:

>>> f.write('Die Ente bleibt draussen!')
>>> f.close()

We have finished writing our file, so we can move it to the new space for other applications to pick it up:

>>> filestore.move('a-file', 'tmp', 'new')
>>> filestore.list('tmp')
[]
>>> filestore.list('new')
['.../new/a-file']

The move operation uses os.move which is supposed to be atomic. When another processes “sees” the file it can directly work with it and move it to ‘cur’:

>>> filestore.move('a-file', 'new', 'cur')
>>> filestore.list('new')
[]
>>> filestore.list('cur')
['.../cur/a-file']

Remove the temporary directory after testing:

>>> import shutil
>>> shutil.rmtree(store_dir)

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

gocept.filestore-0.2.tar.gz (4.3 kB view details)

Uploaded Source

File details

Details for the file gocept.filestore-0.2.tar.gz.

File metadata

File hashes

Hashes for gocept.filestore-0.2.tar.gz
Algorithm Hash digest
SHA256 b4aa426dc7ceca6924f149578fb2bdc7336e0c469b6bc6dd9cbfb2539d21744c
MD5 9ffc895c96d1f090dcfd75d4c0d220e6
BLAKE2b-256 fc03b3723903fddd9d8d75d7ecc8c2a258624646f70e69ea01ae1aab57676cc1

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page