Re: How to run a task continuously in the background

Поиск
Список
Период
Сортировка
От Luca Ferrari
Тема Re: How to run a task continuously in the background
Дата
Msg-id CAKoxK+4XysF-aA3VvFMn6pQYXsgs1o92JZ5uGx8=18Fr8+q4xA@mail.gmail.com
обсуждение исходный текст
Ответ на Re: How to run a task continuously in the background  (Dirk Mika <Dirk.Mika@mikatiming.de>)
Ответы Re: How to run a task continuously in the background  (Dirk Mika <Dirk.Mika@mikatiming.de>)
Re: How to run a task continuously in the background  (Rory Campbell-Lange <rory@campbell-lange.net>)
Список pgsql-general
On Wed, Jul 17, 2019 at 9:38 AM Dirk Mika <Dirk.Mika@mikatiming.de> wrote:
> That is basically still my main question. How do I start a background job (e.g. a function) which waits by polling or
LISTEN/ NOTIFY for records in a table to be processed.
 


You will have a trigger that, once new tuples are created (or older
update and so on) issues a NOTIFY.
Somewhere (within PostgreSQL or outside it) there will be a process
that issued a LISTEN and is locked until a notify comes in. Then it
does process whatever you need to do.
As an example your trigger function will be something like
<https://github.com/fluca1978/PostgreSQL-11-Quick-Start-Guide/blob/master/Chapter09/Chapter09_Listing05.sql>
and your listening process will be something like
<https://github.com/fluca1978/PostgreSQL-11-Quick-Start-Guide/blob/master/Chapter09/Chapter09_Listing09.perl>.

This makes your processing fully asynchronous, and with some tune
allows you to decide the start/stop/resume policy as you need/wish.

Besides, it is quite hard for me to get to the point where you need to
check for new data every second, and therefore why you are not
satisfied with pg_cron or stuff like that.

Luca



В списке pgsql-general по дате отправления:

Предыдущее
От: Rob Sargent
Дата:
Сообщение: Re: How to run a task continuously in the background
Следующее
От: Luca Ferrari
Дата:
Сообщение: Re: Issue related with patitioned table:How can I quickly determinewhich child table my record is in,given a specific primary key value?