Найти - Пользователи
Полная версия: PLPython Locked tables
Начало » Базы данных » PLPython Locked tables
1
ZerG
ДОбрый день!
Есть код работающий и написанный функцией в Postgresql.
Все бы прекрасно - но в виду определенных обстоятельств иногда таблица в которую нужно писать данные залочена! Соответственно функция при отработке зависает на инсерте и все - пишите письма! Как можно обработать данное исключение или поставить таймаут?
Благодарю!
py.user.next
ZerG
Есть код работающий и написанный функцией в Postgresql.
Пример кода скинь.
ZerG

plpy.execute(“INSERT into table_name VALUES (1, 2, 3)”)
py.user.next
Полный кусок скинь, чтобы я его запустить мог. Потому что у меня даже модуль не установлен. Чтобы его установить, нужно понять, чем ты пользуешься (потому что часто их дохрена этих модулей). Чтобы убедиться, что ты там правильно всё открыл, нужен твой кусок кода, который ты написал. Может, ты где-то там пропёрся при настройках и не понимаешь этого.
ZerG
Какие настройки????
Ето встроенный в POstgresql модуль поддержки питона!
Я не импортирую никаких там psycopg2 и так далее

 CREATE OR REPLACE FUNCTION public.py_parser_mail()
 RETURNS text
 LANGUAGE plpythonu
AS $function$
# -*- coding: utf-8 -*-
plpy.notice('START FUNC')
rmess = 'Done'
plpy.execute(INSERT into table_name VALUES (1, 2, 3))
return rmess
$function$

Ну разумеется это к примеру. Но это рабочий пример.
Суть в том что когда table_name залочена - то инсерт залипает и функция постгреса вся - вешается! Вот мне и нужно исключение по локу или таймаут добавить! и делать выход по исключению!
PooH
Может перед инсертом проверять наличие блокировки на таблице?
py.user.next
postgresql.org. config
statement_timeout (integer)

Abort any statement that takes over the specified number of milliseconds, starting from the time the command arrives at the server from the client. If log_min_error_statement is set to ERROR or lower, the statement that timed out will also be logged. A value of zero (the default) turns this off.

Setting statement_timeout in postgresql.conf is not recommended because it affects all sessions.
Посмотри эту переменную в настройках.

postgresql.org. plpy
Здесь примеры функций. Посмотри, как они записаны, и свою функцию так же запиши.
ZerG
Конфиг поси трогать не могу по ряду причин! Там свои спец настройки и их менять нельзя.
Примеры функций видел!
Собственно мысль пока что была только одна - перед инсертом делать отдельно запрос на чек лока таблицы! И все бы хорошо - но логика реализации не очень понравилась!
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB