postgresql 如何停止PostGres Cron作业?有没有办法阻止它?

klr1opcd  于 12个月前  发布在  PostgreSQL
关注(0)|答案(2)|浏览(92)

假设我在数据库中运行以下cron作业:

SELECT cron.schedule('30 3 * * 6', $$DELETE FROM events WHERE event_time < now() - interval '1 week'$$);

字符串
它会停止运行吗?如果我不想让作业再运行,我如何删除它?
如果没有其他方法我可以停止上述工作,请建议一个替代方案,我可以使用.
先谢谢你了!

e5nqia27

e5nqia271#

您可以在cron.job表中找到作业ID,并使用cron.unschedule函数停止作业:

postgres=# SELECT * FROM cron.job;
 jobid │  schedule  │                             command                             │ nodename  │ nodeport │ database │ username │ active │ jobname 
───────┼────────────┼─────────────────────────────────────────────────────────────────┼───────────┼──────────┼──────────┼──────────┼────────┼─────────
     1 │ 30 3 * * 6 │ DELETE FROM events WHERE event_time < now() - interval '1 week' │ localhost │     5432 │ postgres │ marco    │ t      │ 
(1 row)

postgres=# SELECT cron.unschedule(1);
 unschedule 
────────────
 t
(1 row)

postgres=# SELECT * FROM cron.job;
 jobid │ schedule │ command │ nodename │ nodeport │ database │ username │ active │ jobname 
───────┼──────────┼─────────┼──────────┼──────────┼──────────┼──────────┼────────┼─────────
(0 rows)

字符串

quhf5bfb

quhf5bfb2#

要暂时禁用cron作业而不取消调度,请使用active列。

BEGIN;

UPDATE cron.job 
SET active = false 
WHERE jobid = 1
  AND active
RETURNING *;

COMMIT; -- verify first

字符串
自pg_cron v1.1.0(2018年3月22日)起支持。

相关问题