powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Как выполнить запрос и забыть о нем?
8 сообщений из 8, страница 1 из 1
Как выполнить запрос и забыть о нем?
    #39926232
Синий Слон
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Коллеги, приветствую.


Есть такая задача:

Запустить процедуру в постгрессе и сразу отконнектиться, не дожидаясь ее завершения.

процедура выполняется несколько часов.


А запустить и отконнектиться надо за 1 сек.





Как это можно сделать?
...
Рейтинг: 0 / 0
Как выполнить запрос и забыть о нем?
    #39926239
Синий Слон
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если запустить с помощью dblink_send_query и отключиться - соединение выполняется пару секунд, и потом отваливается, не завершившись.


К примеру если внутри поставить

pg_sleep(50);


соединение не дожидается 50 секунд и отваливается через 3-5 сек
...
Рейтинг: 0 / 0
Как выполнить запрос и забыть о нем?
    #39926240
Синий Слон
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Почему так? о_О
...
Рейтинг: 0 / 0
Как выполнить запрос и забыть о нем?
    #39926245
Melkij
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Никак.
Процесс завершается как только обнаруживает обрыв связи. Меняйте архитектуру задачи. В частности на брокер очереди и отдельный процесс-воркер который будет эту очередь вычитывать и выполнять задачи.
well, при большом желании - напишите background worker базы.
...
Рейтинг: 0 / 0
Как выполнить запрос и забыть о нем?
    #39926301
Синий Слон
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Melkij
Никак.
Процесс завершается как только обнаруживает обрыв связи. Меняйте архитектуру задачи. В частности на брокер очереди и отдельный процесс-воркер который будет эту очередь вычитывать и выполнять задачи.
well, при большом желании - напишите background worker базы.



Благодарю за ответ. Скорее всего нечто подобное и придется делать.


Получается что реализация "запустил и отключился" в принципе не возможна?
...
Рейтинг: 0 / 0
Как выполнить запрос и забыть о нем?
    #39926306
Фотография Maxim Boguk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Синий Слон
Melkij
Никак.
Процесс завершается как только обнаруживает обрыв связи. Меняйте архитектуру задачи. В частности на брокер очереди и отдельный процесс-воркер который будет эту очередь вычитывать и выполнять задачи.
well, при большом желании - напишите background worker базы.



Благодарю за ответ. Скорее всего нечто подобное и придется делать.


Получается что реализация "запустил и отключился" в принципе не возможна?


средствами именно базы - нет.
Это просто не ее задача.
...
Рейтинг: 0 / 0
Как выполнить запрос и забыть о нем?
    #39926343
Синий Слон
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Maxim Boguk
Синий Слон
пропущено...



Благодарю за ответ. Скорее всего нечто подобное и придется делать.


Получается что реализация "запустил и отключился" в принципе не возможна?


средствами именно базы - нет.
Это просто не ее задача.



Понял, спасибо.





Melkij
Никак.
Процесс завершается как только обнаруживает обрыв связи. Меняйте архитектуру задачи. В частности на брокер очереди и отдельный процесс-воркер который будет эту очередь вычитывать и выполнять задачи.
well, при большом желании - напишите background worker базы.



Методом тыка понял, что процесс завершается даже не когда обрыв связи. А просто завершилась транзакция. Т.е. запустил в анонимном блоке сенд квари, она висит пару сек и потом переходит из актив в идл. Хотя внутри пг_слип на 30 секунд.
...
Рейтинг: 0 / 0
Как выполнить запрос и забыть о нем?
    #39926346
Фотография DSKalugin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
я для разовых, но многочасовых задач открываю локальную для сервера PostgreSQL/Linux сессию в tmux , запускаю сценарий через psql на выполнение и отключаюсь от tmux .
При этом задача выполняется как фоновый процесс.
Если речь о систематическом запуске таких процедур, то нужно на стороне сервера реализовать некое API, которое будет принимать на вход задачи и выполнять их в асинхронном режиме
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Как выполнить запрос и забыть о нем?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]