Гость
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Как выполнить запрос и забыть о нем? / 8 сообщений из 8, страница 1 из 1
13.02.2020, 13:30
    #39926232
Синий Слон
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как выполнить запрос и забыть о нем?
Коллеги, приветствую.


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

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

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


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





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


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

pg_sleep(50);


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



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


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



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


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


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



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


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


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



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





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



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


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