https://github.com/bear/python-twitter
Revision 58e0d05c71a7716475bcd18a4a082ad434fc8989 authored by David Zülke on 16 February 2015, 15:27:19 UTC, committed by David Zülke on 16 February 2015, 15:27:19 UTC
When running e.g. gunicorn, sometimes the worker processes concurrently check for the tmp dir and then both attempt to create it:

```
[2015-02-16 15:01:46 +0000] [14] [ERROR] Exception in worker process:
Traceback (most recent call last):
  File "/app/.heroku/python/lib/python2.7/site-packages/gunicorn/arbiter.py", line 503, in spawn_worker
    worker.init_process()
  File "/app/.heroku/python/lib/python2.7/site-packages/gunicorn/workers/base.py", line 116, in init_process
    self.wsgi = self.app.wsgi()
  File "/app/.heroku/python/lib/python2.7/site-packages/gunicorn/app/base.py", line 67, in wsgi
    self.callable = self.load()
  File "/app/.heroku/python/lib/python2.7/site-packages/gunicorn/app/wsgiapp.py", line 65, in load
    return self.load_wsgiapp()
  File "/app/.heroku/python/lib/python2.7/site-packages/gunicorn/app/wsgiapp.py", line 52, in load_wsgiapp
    return util.import_app(self.app_uri)
  File "/app/.heroku/python/lib/python2.7/site-packages/gunicorn/util.py", line 355, in import_app
    __import__(module)
  File "/app/app.py", line 1, in <module>
    from tweety import app
  File "/app/tweety/__init__.py", line 7, in <module>
    from tweety import routes
  File "/app/tweety/routes/__init__.py", line 8, in <module>
    api=twitter.Api(consumer_key=configuration['consumer_key'], consumer_secret=configuration['consumer_secret'], access_token_key=configuration['access_token_key'], access_token_secret=configuration['access_token_secret'])
  File "/app/.heroku/python/lib/python2.7/site-packages/twitter/api.py", line 160, in __init__
    self.SetCache(cache)
  File "/app/.heroku/python/lib/python2.7/site-packages/twitter/api.py", line 3286, in SetCache
    self._cache = _FileCache()
  File "/app/.heroku/python/lib/python2.7/site-packages/twitter/_file_cache.py", line 15, in __init__
    self._InitializeRootDirectory(root_directory)
  File "/app/.heroku/python/lib/python2.7/site-packages/twitter/_file_cache.py", line 78, in _InitializeRootDirectory
    os.mkdir(root_directory)
OSError: [Errno 17] File exists: '/tmp/python.cache_nobody'
```

This change prevents exceptions on existing dirs, but lets all other error cases bubble up.
1 parent 55f9ed8
History
Tip revision: 58e0d05c71a7716475bcd18a4a082ad434fc8989 authored by David Zülke on 16 February 2015, 15:27:19 UTC
Fix race condition in _InitializeRootDirectory
Tip revision: 58e0d05
File Mode Size
doc
examples
testdata
twitter
.gitignore -rw-r--r-- 335 bytes
AUTHORS.rst -rw-r--r-- 681 bytes
CHANGES -rw-r--r-- 20.2 KB
COPYING -rw-r--r-- 605 bytes
LICENSE -rw-r--r-- 11.1 KB
MANIFEST.in -rw-r--r-- 93 bytes
Makefile -rw-r--r-- 752 bytes
NOTICE -rw-r--r-- 109 bytes
README.rst -rw-r--r-- 5.6 KB
get_access_token.py -rwxr-xr-x 2.7 KB
python-twitter.spec -rw-r--r-- 1.1 KB
requirements.txt -rw-r--r-- 27 bytes
setup.py -rwxr-xr-x 2.0 KB
twitter_test.py -rwxr-xr-x 31.3 KB

README.rst

back to top