Ошибка сервера (Google Apps Engine) при выполнении нестандартного загрузчика - PullRequest
1 голос
/ 27 ноября 2010

Мне не удалось использовать опцию массового загрузчика, которая официально предоставлена, поэтому я написал свой собственный скрипт массового загрузчика (фактически обработчик записей, который будет постепенно загружать объекты из csv в хранилище данных).

Решение работало следующим образом:
1. Я бы скопировал данные из CSV-файла
2. Вставьте его в текстовую область в форме в приложении
3. Разместите форму
4. Обработчик разбирает входящий текст на заголовки (имена столбцов)
5. Сохраняет остальные строки в списке
6. пошагово выбирает 100 строк из списка и для каждой строки создает и сохраняет объект (тип объекта определяется из типа, указанного в поле выбора в форме)

Теперь этот метод будет работать на моем сервере разработки для небольших вводов до 1000 строк, кроме того, он будет отображать следующую ошибку:

Traceback (последний последний вызов):
Файл "/ host / _Hive / Lab / ACTIVE WORKS / UG VOTES / google_appengine / google / appengine / ext / webapp / init .py", строка 513, в вызов
Файл "/ host / _Hive / Lab / ACTIVE WORKS / UG VOTES / google_appengine / myApps / ugvotes / ugvotes.py", строка 241, в сообщении
Файл "/ host / _Hive / Lab / ACTIVE WORKS / UG VOTES / google_appengine / google / appengine / ext / db / init .py", строка 893, на месте
Файл "/ host / _Hive / Lab / ACTIVE WORKS / UG VOTES / google_appengine / google / appengine / api / datastore.py", строка 291, в Put
Файл "/ host / _Hive / Lab / ACTIVE WORKS / UG VOTES / google_appengine / google / appengine / api / datastore.py", строка 195, в _MakeSyncCall
Файл "/ host / _Hive / Lab / ACTIVE WORKS / UG VOTES / google_appengine / google / appengine / api / apiproxy_stub_map.py", строка 499, в check_success
Файл "/ host / _Hive / Lab / ACTIVE WORKS / UG VOTES / google_appengine / google / appengine / api / apiproxy_rpc.py", строка 149, в _WaitImpl
Файл "/ host / _Hive / Lab / ACTIVE WORKS / UG VOTES / google_appengine / google / appengine / api / datastore_file_stub.py", строка 863, в MakeSyncCall
Файл "/ host / _Hive / Lab / ACTIVE WORKS / UG VOTES / google_appengine / google / appengine / api / apiproxy_stub.py", строка 80, в MakeSyncCall
Файл "/ host / _Hive / Lab / ACTIVE WORKS / UG VOTES / google_appengine / google / appengine / api / datastore_file_stub.py", строка 933, в _Dynamic_Put
Файл "/ host / _Hive / Lab / ACTIVE WORKS / UG VOTES / google_appengine / google / appengine / api / datastore_file_stub.py", строка 806, в __WriteDatastore
Файл "/ host / _Hive / Lab / ACTIVE WORKS / UG VOTES / google_appengine / google / appengine / api / datastore_file_stub.py", строка 836, в __WritePickled
IOError: [Errno 24] Слишком много открытых файлов: '/ tmp / tmpOfgvm3'

Сначала я подумал, что это ошибка из-за ограничений сервера разработки, но когда я попытался выполнить ту же задачу из производственный сервер, я получил следующую ошибку:

Ошибка: ошибка сервера Сервер обнаружил ошибку и не смог выполнить ваш запрос.

Если проблема сохраняется, сообщите о своей проблеме и укажите это сообщение об ошибке и запрос, вызвавший ее.

Кто знает, что могло пойти не так, и что я могу с этим поделать?

спасибо.

1 Ответ

0 голосов
/ 27 ноября 2010

Это известная проблема: Python dev SDK 1.3.8 datastore_file_stub.py, по-видимому, приводит к утечке файловых дескрипторов .
Доступен неофициальный патч .

...