|
Как выполнить запрос и забыть о нем?
|
|||
---|---|---|---|
#18+
Коллеги, приветствую. Есть такая задача: Запустить процедуру в постгрессе и сразу отконнектиться, не дожидаясь ее завершения. процедура выполняется несколько часов. А запустить и отконнектиться надо за 1 сек. Как это можно сделать? ... |
|||
:
Нравится:
Не нравится:
|
|||
13.02.2020, 13:30 |
|
Как выполнить запрос и забыть о нем?
|
|||
---|---|---|---|
#18+
Если запустить с помощью dblink_send_query и отключиться - соединение выполняется пару секунд, и потом отваливается, не завершившись. К примеру если внутри поставить pg_sleep(50); соединение не дожидается 50 секунд и отваливается через 3-5 сек ... |
|||
:
Нравится:
Не нравится:
|
|||
13.02.2020, 13:38 |
|
Как выполнить запрос и забыть о нем?
|
|||
---|---|---|---|
#18+
Почему так? о_О ... |
|||
:
Нравится:
Не нравится:
|
|||
13.02.2020, 13:39 |
|
Как выполнить запрос и забыть о нем?
|
|||
---|---|---|---|
#18+
Никак. Процесс завершается как только обнаруживает обрыв связи. Меняйте архитектуру задачи. В частности на брокер очереди и отдельный процесс-воркер который будет эту очередь вычитывать и выполнять задачи. well, при большом желании - напишите background worker базы. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.02.2020, 13:47 |
|
Как выполнить запрос и забыть о нем?
|
|||
---|---|---|---|
#18+
Melkij Никак. Процесс завершается как только обнаруживает обрыв связи. Меняйте архитектуру задачи. В частности на брокер очереди и отдельный процесс-воркер который будет эту очередь вычитывать и выполнять задачи. well, при большом желании - напишите background worker базы. Благодарю за ответ. Скорее всего нечто подобное и придется делать. Получается что реализация "запустил и отключился" в принципе не возможна? ... |
|||
:
Нравится:
Не нравится:
|
|||
13.02.2020, 15:37 |
|
Как выполнить запрос и забыть о нем?
|
|||
---|---|---|---|
#18+
Синий Слон Melkij Никак. Процесс завершается как только обнаруживает обрыв связи. Меняйте архитектуру задачи. В частности на брокер очереди и отдельный процесс-воркер который будет эту очередь вычитывать и выполнять задачи. well, при большом желании - напишите background worker базы. Благодарю за ответ. Скорее всего нечто подобное и придется делать. Получается что реализация "запустил и отключился" в принципе не возможна? средствами именно базы - нет. Это просто не ее задача. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.02.2020, 15:45 |
|
Как выполнить запрос и забыть о нем?
|
|||
---|---|---|---|
#18+
Maxim Boguk Синий Слон пропущено... Благодарю за ответ. Скорее всего нечто подобное и придется делать. Получается что реализация "запустил и отключился" в принципе не возможна? средствами именно базы - нет. Это просто не ее задача. Понял, спасибо. Melkij Никак. Процесс завершается как только обнаруживает обрыв связи. Меняйте архитектуру задачи. В частности на брокер очереди и отдельный процесс-воркер который будет эту очередь вычитывать и выполнять задачи. well, при большом желании - напишите background worker базы. Методом тыка понял, что процесс завершается даже не когда обрыв связи. А просто завершилась транзакция. Т.е. запустил в анонимном блоке сенд квари, она висит пару сек и потом переходит из актив в идл. Хотя внутри пг_слип на 30 секунд. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.02.2020, 16:46 |
|
Как выполнить запрос и забыть о нем?
|
|||
---|---|---|---|
#18+
я для разовых, но многочасовых задач открываю локальную для сервера PostgreSQL/Linux сессию в tmux , запускаю сценарий через psql на выполнение и отключаюсь от tmux . При этом задача выполняется как фоновый процесс. Если речь о систематическом запуске таких процедур, то нужно на стороне сервера реализовать некое API, которое будет принимать на вход задачи и выполнять их в асинхронном режиме ... |
|||
:
Нравится:
Не нравится:
|
|||
13.02.2020, 16:48 |
|
|
start [/forum/topic.php?fid=53&fpage=31&tid=1994823]: |
0ms |
get settings: |
11ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
44ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
50ms |
get tp. blocked users: |
2ms |
others: | 17ms |
total: | 162ms |
0 / 0 |