Latest posts on Какая-то муть с транзакциями а алхимии topichttps://python.su/forum/topic/2155/2008-05-30T10:38:48+03:00Общий :: Базы данных :: Какая-то муть с транзакциями а алхимии
2008-05-30T10:38:48+03:00Naota13545Грубо говоря код был такой:<br/><div class="code"><pre><span class="k">try</span><span class="p">:</span>
<span class="o">...</span>
<span class="n">Session</span><span class="o">.</span><span class="n">commit</span><span class="p">()</span>
<span class="o">...</span>
<span class="k">except</span><span class="p">:</span>
<span class="o">...</span>
<span class="n">Session</span><span class="o">.</span><span class="n">update</span><span class="p">(</span><span class="n">obj</span><span class="p">)</span>
<span class="n">Session</span><span class="o">.</span><span class="n">commit</span><span class="p">()</span>
</pre></div>Все дело в том, что этот скрипт - это функция в контроллере. И когда я ловил все эксепшены этой функции, включая из Session.commit(), то почемуто страдало все приложение(сайт). Если этот эксепшен не ловить, то сбоя не будет, но я тогда не узнаю, что ошибка произошла..короче не ясно как ловить это. Выход один, избежать эксепшена в Session.commit() всякими проверками.
Общий :: Базы данных :: Какая-то муть с транзакциями а алхимии
2008-05-30T07:02:00+03:00bw13543<blockquote><em>Naota</em><br/>и вот на операции Session.commit() он обрывался</blockquote>Кто он? Соединение? Странно, вроде соединение не должно разрываться при некорректном запросе, точнее при ошибке в запросе, в частности, как я понял, время передавалось в некорректном виде.<br/><br/>То что обравается именно соединение, по сообщению об ошибке в транзакции, довольно логично предположить. Только не понятно в какой момент это сообщение выдается? Видимо уже после её начала (begin), тогда как она без соединения вообще могла быть начата? <strong>pool_recycle</strong> служит совершенно определенным целям, а не для решения проблемы, причины которой даже неизвестны.<br/><br/>..bw
Общий :: Базы данных :: Какая-то муть с транзакциями а алхимии
2008-05-29T23:26:57+03:00Андрей Светлов13540Так тебе же bw ясно написал: connection (а в ней transaction) отвалилась. (По таймауту или в силу других причин - не важно. Все может зависеть от конкретного dbapi драйвера). После этого connection без переподключения использовать невозможно.<br/>По идее ошибку в Session.commit ты должен был видеть - и иметь возможность отреагировать соответственно.<br/>В зависимости от того, как ты в Пилонах создаешь Session - может иметь различные побочные эффекты. Правильно пойманая ошибка помогает. pool_recycle позволяет избавится от проблемы через 5-10 минут после ее происхождения.
Общий :: Базы данных :: Какая-то муть с транзакциями а алхимии
2008-05-29T19:28:09+03:00Naota13535Опишу подробнее, может кто-то с этим столкнется.<br/>Скрипт получал время в виде строки “часы:минуты” и не проверяя правильность(так как брал с другого сайта и там как думалось что данные хранят они в Time, но как оказалось это просто строка О_О) заносил в базу и вот на операции Session.commit() он обрывался, влияя каким-то образом на всё приложение. Интересно как это работает…
Общий :: Базы данных :: Какая-то муть с транзакциями а алхимии
2008-05-29T16:31:20+03:00Naota13526Все. Нашел в чем проблема. Оказывается все просто. Один скрипт который выполнялся по заданию глючил из-за того что ктото ввел неверный формат времени) Смысле он обрывался на commit и вешал всё приложение…
Общий :: Базы данных :: Какая-то муть с транзакциями а алхимии
2008-05-29T12:34:05+03:00Naota13522Ога. Кажется я понял. Один из скриптом очень долго работает. Видимо в этом причина. Надо будет иначе его продумать.
Общий :: Базы данных :: Какая-то муть с транзакциями а алхимии
2008-05-29T10:38:04+03:00Naota13520Странно. И эта фигня только при апаче. Если приложение из пастера запускать, то все нормал. Удалил весь код с сервера, заменил тестовым. Вроде работает пока. До этого при обновлении я не удалял а поверх писал. Может из-за этого.
Общий :: Базы данных :: Какая-то муть с транзакциями а алхимии
2008-05-29T07:23:31+03:00bw13515Когда-то я столкнулся с поблемой при работе с MySQL. Последний после обновления, по умолчанию, стал разрывать соединение по истечении 10 минут или вроде того. Возможно у тебя та же проблема? Тогда попробуй использовать <strong>pool_recycle</strong> в <strong>create_engine</strong>.<br/><br/>..bw
Общий :: Базы данных :: Какая-то муть с транзакциями а алхимии
2008-05-29T04:18:24+03:00Naota13513После каких-то изменений, сервер(pylons) начал периодически выдавать ошибку “The transaction is inactive due to a rollback in a subtransaction and should be closed”. Чаще всего при повторном обновлении страницы все снова нормально, но иногда приходится перезапускать сервер. Вроде бы когда долго сеанс неактивный и при его активации это выпадает. Не ясно…совсем…а так все без ошибок работает.