I’m testing a Google App Engine application where I’ve started using task queues to process a batch job. I have a local job that seem a number of tasks in a task queue which seems to create a number of objects in my file system. To be clear: I’m not creating any files, the app server seems to be doing so.
I’ve noticed when creating large numbers of tasks (2000+) in my development environment that at some point my jobs start failing with the following error:
<body bgcolor="#f0f0f8"><font color="#f0f0f8" size="-5"> -->
<body bgcolor="#f0f0f8"><font color="#f0f0f8" size="-5"> --> -->
</font> </font> </font> </script> </object> </blockquote> </pre>
</table> </table> </table> </table> </table> </font> </font> </font><pre>Traceback (most recent call last):
File "/Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/google/appengine/tools/dev_appserver.py", line 3211, in _HandleRequest
self._Dispatch(dispatcher, self.rfile, outfile, env_dict)
File "/Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/google/appengine/tools/dev_appserver.py", line 3135, in _Dispatch
'request.')
File "/System/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/tempfile.py", line 302, in mkstemp
File "/System/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/tempfile.py", line 236, in _mkstemp_inner
OSError: [Errno 24] Too many open files: '/var/folders/rm/rm1N57BDHNCyQUT2mQRTX++++TI/-Tmp-/request.QKY1gF.tmp'
</pre>
I’m on OS X 10.6.5 and I’m guessing it’s something to do with my OS – though I can’t quite wrap my head around why dev_appserver.py would open up so many file descriptors. Even if it’s creating one per task won’t the rate limiting prevent this problem from occurring?
I assume this is a problem I’ll only see in dev, but I wanted to ask if anyone else has seen it.
David is correct. You can’t create files in the local file system.
But the error your getting is caused by a a bug involving tasks in the dev_appserver. Once you get the error, try running
lsof, you’ll see that the dev server has a bunch of handles to the datastore file.Switch to using the sqlite backend this problem will go away. Do not forget, when you switch you will need to clear the datastore the first time.