OSError: [Errno 24] Слишком много открытых файлов с очередями задач Google App Engine в среде разработки - PullRequest
3 голосов
/ 16 ноября 2010

Я тестирую приложение Google App Engine, где я начал использовать очереди задач для обработки пакетного задания.У меня есть локальная работа, которая кажется рядом задач в очереди задач, которая, кажется, создает несколько объектов в моей файловой системе.Чтобы было ясно: я не создаю никаких файлов, сервер приложений, кажется, делает это.

Я заметил при создании большого количества задач (2000+) в моей среде разработки, что в какой-то момент мои задания перестали работать со следующей ошибкой:

<code><body bgcolor="#f0f0f8"><font color="#f0f0f8" size="-5"> -->
<body bgcolor="#f0f0f8"><font color="#f0f0f8" size="-5"> --> -->
</font> </font> </font> </script> </object> </blockquote> 
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'

Я нахожусь на OS X 10.6.5, и я предполагаю, что это как-то связано с моей ОС- хотя я не могу полностью понять, почему dev_appserver.py открыл бы так много файловых дескрипторов.Даже если он создает по одному для каждой задачи, разве ограничение скорости не предотвратит возникновение этой проблемы?

Я предполагаю, что это проблема, которую я увижу только в dev, но я хотел спросить, видел ли кто-нибудь еще ее.

Ответы [ 2 ]

4 голосов
/ 16 ноября 2010

Дэвид прав.Вы не можете создавать файлы в локальной файловой системе.

Но ошибка, которую вы получаете, вызвана ошибкой, связанной с задачами в dev_appserver.Как только вы получите сообщение об ошибке, попробуйте запустить lsof, и вы увидите, что у сервера dev есть несколько дескрипторов файла хранилища данных.

При переключении на использование SQL-сервера эта проблема исчезнет.Не забывайте, что при переключении вам нужно будет очистить хранилище данных в первый раз.

dev_appserver.py --use_sqlite --clear_datastore .
0 голосов
/ 16 ноября 2010

К сожалению, в движке приложения вы не можете создавать файлы в удаленной файловой системе (см. Раздел «Песочница» документации).

Если вам нужно создать «файлы»Вы можете использовать BlobProperty для объекта хранилища данных (если ваши файлы меньше 1 МБ) или, возможно, Blobstore для файлов большего размера (в зависимости от ваших требований).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...