GCP Cloud SQL PostgreSQL中pg_cron每周/每月调度失效问题
问题原因分析
针对你在GCP Cloud SQL PostgreSQL 14上使用pg_cron 1.4时,每日调度正常但每周/每月调度无执行记录的问题,可能的原因如下:
时区不匹配:pg_cron默认使用数据库实例的时区(通常为UTC),若你的预期时区与实例时区不一致,会导致任务触发时间和你预期的不符。比如你设置每周四19:49运行,但实例时区是UTC,实际触发时间是UTC时间19:49(对应东八区次日3:49),你可能误以为任务未运行;反之若你按本地时区设置时间,实例时区下该时间尚未到达,任务自然不会执行。
任务触发周期未到:
- 每月5号的任务:如果设置任务时当月5号已经过了,任务要等到下一个月的5号才会首次触发;
- 每周四的任务:如果设置时已过了当周周四的19:49,任务需等到下一周的周四才会运行。若你在设置后短时间内检查,自然看不到执行记录。
pg_cron版本兼容性问题:pg_cron 1.4在GCP Cloud SQL环境中可能存在星期/日期字段解析的兼容性bug,导致每周、每月的调度规则无法被正确识别,任务未被纳入调度队列。
任务注册异常:虽然调用
cron.schedule返回成功,但在Cloud SQL的pg_cron后台服务中,每周/每月类型的任务可能未被正确注册。可以通过以下SQL查询确认任务状态:SELECT jobid, schedule, command FROM cron.job WHERE jobname = 'test cron KO';
内容的提问来源于stack exchange,提问作者Paolo Castelletti
相关产品推荐
相关产品推荐

