Форум сайта python.su
ДОбрый день!
Есть код работающий и написанный функцией в Postgresql.
Все бы прекрасно - но в виду определенных обстоятельств иногда таблица в которую нужно писать данные залочена! Соответственно функция при отработке зависает на инсерте и все - пишите письма! Как можно обработать данное исключение или поставить таймаут?
Благодарю!
Офлайн
ZerGПример кода скинь.
Есть код работающий и написанный функцией в Postgresql.
Офлайн
plpy.execute(“INSERT into table_name VALUES (1, 2, 3)”)
Офлайн
Полный кусок скинь, чтобы я его запустить мог. Потому что у меня даже модуль не установлен. Чтобы его установить, нужно понять, чем ты пользуешься (потому что часто их дохрена этих модулей). Чтобы убедиться, что ты там правильно всё открыл, нужен твой кусок кода, который ты написал. Может, ты где-то там пропёрся при настройках и не понимаешь этого.
Офлайн
Какие настройки????
Ето встроенный в 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$
Офлайн
Может перед инсертом проверять наличие блокировки на таблице?
Офлайн
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.
Офлайн
Конфиг поси трогать не могу по ряду причин! Там свои спец настройки и их менять нельзя.
Примеры функций видел!
Собственно мысль пока что была только одна - перед инсертом делать отдельно запрос на чек лока таблицы! И все бы хорошо - но логика реализации не очень понравилась!
Офлайн