Re: Gae SQL and DatabaseError - timeout

34 views
Skip to first unread message

Mikhail Kashkin

unread,
Feb 6, 2013, 1:17:21 AM2/6/13
to google-ap...@googlegroups.com
id в данном случае это ключ? Скорее всего ничего не надо делать, потому что операция отправляется backend'у, и там выполняется слишком долго. 

Вообще, по хорошему, надо посмотреть цену DELETE и UPDATE, возможно лучше обновлять запись и ставить флаг deleted, а потом отдельной задачей ходить и очищать такие записи.

2013/2/6  <vsht...@gmail.com>:
> Здравствуйте. Проект на python 2.7 и SQL. При обработке запроса на удаление
> или обновление одной записи вылетает DatabaseError с превышением лимитов
> времени. Операцию записи выполняет. Подскажите, пожалуйста, как решить
> проблему?
> Код:
> class Test (webapp2.RequestHandler):
>     def get(self):
>         conn = rdbms.connect(instance=_INSTANCE_NAME, database='test0')
>         cursor = conn.cursor()
>         cursor.execute("DELETE FROM test1 WHERE id=2;")
>
> Отчет об ошибке:
>
> Traceback (most recent call last):
>   File
> "/python27_runtime/python27_lib/versions/third_party/webapp2-2.5.2/webapp2.py",
> line 1535, in __call__
>     rv = self.handle_exception(request, response, e)
>   File
> "/python27_runtime/python27_lib/versions/third_party/webapp2-2.5.2/webapp2.py",
> line 1529, in __call__
>     rv = self.router.dispatch(request, response)
>   File
> "/python27_runtime/python27_lib/versions/third_party/webapp2-2.5.2/webapp2.py",
> line 1278, in default_dispatcher
>     return route.handler_adapter(request, response)
>   File
> "/python27_runtime/python27_lib/versions/third_party/webapp2-2.5.2/webapp2.py",
> line 1102, in __call__
>     return handler.dispatch()
>   File
> "/python27_runtime/python27_lib/versions/third_party/webapp2-2.5.2/webapp2.py",
> line 572, in dispatch
>     return self.handle_exception(e, self.app.debug)
>   File
> "/python27_runtime/python27_lib/versions/third_party/webapp2-2.5.2/webapp2.py",
> line 570, in dispatch
>     return method(*args, **kwargs)
>   File "/base/data/home/apps/s~vshttlttest/2.365089095351249780/main.py",
> line 25, in get
>     cursor.execute("DELETE FROM nomen WHERE id=2;")
>   File
> "/python27_runtime/python27_lib/versions/1/google/storage/speckle/python/api/rdbms.py",
> line 499, in execute
>     self._DoExec(request)
>   File
> "/python27_runtime/python27_lib/versions/1/google/storage/speckle/python/api/rdbms.py",
> line 375, in _DoExec
>     response = self._conn.MakeRequest('Exec', request)
>   File
> "/python27_runtime/python27_lib/versions/1/google/storage/speckle/python/api/rdbms.py",
> line 873, in MakeRequest
>     response = self._MakeRetriableRequest(stub_method, request)
>   File
> "/python27_runtime/python27_lib/versions/1/google/storage/speckle/python/api/rdbms.py",
> line 904, in _MakeRetriableRequest
>     sql_exception.message))
> DatabaseError: 1205: Lock wait timeout exceeded; try restarting transaction
>
> --
> Вы получили это сообщение, поскольку подписаны на группу Google App Engine
> Russian.
>  
> Чтобы отказаться от подписки на эту группу и перестать получать из нее
> сообщения, отправьте электронное письмо на адрес
> google-appengin...@googlegroups.com.
> Чтобы добавлять сообщения в эту группу, отправьте письмо по адресу
> google-ap...@googlegroups.com.
> Перейдите в группу по ссылке
> http://groups.google.com/group/google-appengine-ru?hl=ru.
> Подробнее о функциях можно узнать на странице
> https://groups.google.com/groups/opt_out.
>  
>  



--
Mikhail Kashkin
http://comfort.ly/
http://www.vurt.ru/

Mikhail Kashkin

unread,
Feb 6, 2013, 5:12:09 AM2/6/13
to google-ap...@googlegroups.com
Можно отправлять запрос вида DELETE FROM table1 WHERE delete=True; И не дожидаться его успешного ответа.  Плюс у фоновых задач может оказаться, что другие лимиты по таймауту.

Вообще странно, я давно не держал в руках GAE, но приходит на ум, что может быть есть какие-то другие блокировки на строке, e.g. куча индексов. 

2013/2/6 <vsht...@gmail.com>
Спасибо за ответ!
id - ключ.
Если решать отдельной задачей, то как их удалять, если delete даже на 1 запись выдает timeout?

--
Вы получили это сообщение, поскольку подписаны на группу Google App Engine Russian.
 
Чтобы отказаться от подписки на эту группу и перестать получать из нее сообщения, отправьте электронное письмо на адрес google-appengin...@googlegroups.com.
Чтобы добавлять сообщения в эту группу, отправьте письмо по адресу google-ap...@googlegroups.com.
Перейдите в группу по ссылке http://groups.google.com/group/google-appengine-ru?hl=ru.
Подробнее о функциях можно узнать на странице https://groups.google.com/groups/opt_out.
 
 

Stas Vovk

unread,
Feb 6, 2013, 5:22:33 AM2/6/13
to google-ap...@googlegroups.com
сорри за оффтоп.

я давно не держал в руках GAE
а почему отказался от него? 


2013/2/6 Mikhail Kashkin <mkas...@gmail.com>



--
Best regards,

Stas Vovk

Mikhail Kashkin

unread,
Feb 6, 2013, 9:51:33 AM2/6/13
to google-ap...@googlegroups.com
2013/2/6 Stas Vovk <stas...@gmail.com>

а почему отказался от него? 

С тех пор технологии шагнули вперед и все то что было в GAE можно получить и в более контролируемом окружении. Плюс ценник в результате получился неприлично большим. Одновременно с этим инновации как-то замедлились, по крайней мере те тикеты которые открывал несколько лет назад раз в несколько месяцев вяло обновляются.  Даже если по другим направлениям есть прогресс о котором не знаю, то по тому что было интересно мне ничего нет.

2013/2/6 <vsht...@gmail.com>
запрос вида DELETE FROM table1 WHERE delete=True; удалит ли он запись? ведь запрос delete и update  кроме того, что вызывают timeout ни разу ничего не изменили в таблице. Кроме этого, не понятно почему в SQL-promt'е он срабатывает, а из приложения нет.

Невнимательно читал, но остальная часть верна. Что с индексами? Есть ли проблемы с хранилищем? Может быть надо написать тикет в поддержку. Потому что то что описываете совершенно неправильные симптомы.

Anton Kuznetsov

unread,
Feb 6, 2013, 10:30:16 AM2/6/13
to google-ap...@googlegroups.com


On Feb 6, 2013 4:51 PM, "Mikhail Kashkin" <mkas...@gmail.com> wrote:
>
> 2013/2/6 Stas Vovk <stas...@gmail.com>
>>
>> а почему отказался от него? 
>
>
> С тех пор технологии шагнули вперед и все то что было в GAE можно получить и в более контролируемом окружении.

А что Вы порекомендуете для Пайтона?

>  Плюс ценник в результате получился неприлично большим.

А есть где-то сравнение? Не только цен, но и возможностей и надёжности?

Mikhail Kashkin

unread,
Feb 6, 2013, 11:21:50 AM2/6/13
to google-ap...@googlegroups.com
2013/2/6 Anton Kuznetsov <v...@ved.bz>

А что Вы порекомендуете для Пайтона? 

Мы за небольшой срок сделали нечто похоже на стеке uwsgi+flask+mongo.
 

>  Плюс ценник в результате получился неприлично большим.

А есть где-то сравнение? Не только цен, но и возможностей и надёжности?

Сравнения не делали, есть ли такие чужие не знаю. Mongo дает хорошие инструменты резервирования данных из коробки, репликация в Postgres 9.2 тоже. Используя такие реплкации можно сделать хостинг сопоставимой надежности на дешевом железе.

Reply all
Reply to author
Forward
0 new messages