就是一個簡單的試用,同時測試下docker 基礎鏡像
環境准備
- docker-compose 文件
version: '3'
services:
pgspider-pg_cron:
image: dalongrong/pgspider:pg_cron
ports:
- "5432:5432"
environment:
- "POSTGRES_PASSWORD=dalong"
使用
- 簡單需求
每分鍾insert 數據到一張表中,表結構
CREATE TABLE apps (
id SERIAL PRIMARY KEY,
insert_date timestamp without time zone
);
- 啟動擴展
CREATE EXTENSION pg_cron;
- 創建調度任務
SELECT cron.schedule('* * * * *','insert into apps(insert_date) values(now())');
- 查看任務
SELECT * FROM cron.job;
- 刪除任務
SELECT cron.unschedule(cronid) FROM cron.job;
- 一個效果
一些參考玩法
https://www.citusdata.com/blog/2016/09/09/pgcron-run-periodic-jobs-in-postgres/
https://www.citusdata.com/blog/2017/12/27/real-time-analytics-dashboards-with-citus/
https://www.citusdata.com/blog/2018/01/24/citus-and-pg-partman-creating-a-scalable-time-series-database-on-PostgreSQL/
說明
pg_cron可以並行運行多個作業,但是一次最多只能運行一個作業實例。如果第二輪運行應在第一輪運行完成之前開始,
則第二輪運行將排隊,並在第一輪運行完成后立即開始
參考資料
https://crontab.guru/
https://github.com/rongfengliang/pgspider-docker
https://github.com/citusdata/pg_cron