2013-04-27 2 views
0

Я использую Django 1.4 для GAE + Google Cloud SQL - мой код работает отлично (на dev с локальным sqlite3 db для Django), но chocks with Ошибка сервера (500), когда я пытаюсь «обновить» БД. Это включает в себя анализ определенных файлов и создание записей ~ 10K и их сохранение (я сохраняю их в пакетном режиме с помощью commit_on_success).Использование `` DeadlineExceededError '' с использованием GAE при выполнении многих обновлений (~ 10K) DB

Любые советы?

ответ

0

Эта ошибка возникает для запросов переднего конца через 60 секунд. (its increased) Варианты

Решение:

  1. Использование task queue (опять же лимит времени 10 минут налагается, что достаточно практически).
  2. Разделите свою задачу небольшими партиями. Как мы это делаем: мы делим его на стороне клиента в небольших кусках и вызываем их повторно.

Оба решения работают нормально, в зависимости от того, как вы выполняете эти вызовы и хотите получить результаты. Taskqueue не возвращает результаты клиенту.

-1

Google app engine имеет максимальное время, разрешенное для запроса. Если запрос занимает более 30 секунд, эта ошибка возникает. Если у вас есть большое количество данных для загрузки, либо импортируйте их непосредственно из консоли администратора, либо разбейте запрос на более мелкие куски, либо используйте командную строку python manage.py dbshell для загрузки данных с вашего компьютера.

0

Для задач, которые занимают больше 30 секунд, вы должны использовать task queue.

Кроме того, операции с базой данных также могут быть таймаутом, когда пакетные операции слишком велики. Попытайтесь использовать меньшие партии.