Запуск процедуры через равные промежутки времени.

Изображение hron

Есть процедура, нужно сделать так, чтоб она запускалась каждые 30 сек.
Как это сделать средствами самого ПостгриСкл?

Опции просмотра комментариев

Выберите предпочитаемый вами способ показа комментариев и нажмите "Сохранить настройки" для активации изменений.

Подойдёт? http://post

ну идея конечно

Изображение hron

ну идея конечно не плохая, но там походу минимальное время - минута, а мне нужно 20-30 сек.

А кто мешает

А кто мешает запускаться раз в минуту, выполнять нужное действие, делать паузу на 20-30 секунд и снова запускать нужное действие?

поскреб я

поскреб я затылок и наваял такое:
Небольшая инъекция в код pgAgent
функция "pgagent"."pga_next_schedule"

declare
..............
    -- add by msr (second offset interval)
    step_sec interval;
    last_sec interval;
    --/
.............
begin
.....
    -- add by msr (second offset interval)
 
    nextrun:=date_trunc('second',nextrun);
 
   last_sec:=(COALESCE(to_char(date_trunc('second',jobnextrun),'ss'),'0')||' second')::interval 
    	FROM pgagent.pga_job 
        WHERE jobid=(SELECT s.jscjobid FROM pgagent.pga_schedule s
        							WHERE s.jscid=jscid);
 
    step_sec:= (COALESCE(to_char( date_trunc('second',jscstart),'ss'),'0')||' second')::interval ;
 
    IF extract('second' FROM step_sec)>0 then 
    	nextrun:=nextrun-interval '2 minute';
        nextrun:=nextrun+ (step_sec+last_sec) ;
    end IF;
 
    --/
--<< здесь RETURN nextrun;
end;

Как сие работает: создаете задачу, к ней расписание - если в расписании указаны секунды, например 20, то задание будет запускаться каждые 20 секунд (конечно при условии, что никаких больше нет установок).

Конечно все не очень изящно, но с минимумом изменений, кому надо, тот сам сделает красиво.

Опции просмотра комментариев

Выберите предпочитаемый вами способ показа комментариев и нажмите "Сохранить настройки" для активации изменений.

Back to top

(С) Виктор Вислобоков, 2008-2023