-- 抓取任务的执行进度。 -- -- 为什么需要:spider 一次抓取的品牌可能有几十场秀、每场几百张图, -- 跑起来几分钟到几小时。此前只有 queued/running/done 三个状态, -- 后台看到「执行中」就再无信息,既判断不了「在干什么」, -- 也判断不了「是慢还是卡死」。 -- -- progress_at 与 updated_at 分开记:updated_at 会在领取/回报时变, -- 而 progress_at 只有 spider 真的推进了才变——用它判卡死更准。 ALTER TABLE crawl_tasks ADD COLUMN IF NOT EXISTS progress_done smallint NOT NULL DEFAULT 0, ADD COLUMN IF NOT EXISTS progress_total smallint NOT NULL DEFAULT 0, ADD COLUMN IF NOT EXISTS progress_text varchar(160) NOT NULL DEFAULT '', ADD COLUMN IF NOT EXISTS progress_at bigint NOT NULL DEFAULT 0; COMMENT ON COLUMN crawl_tasks.progress_done IS '已处理的秀数量(spider 上报)'; COMMENT ON COLUMN crawl_tasks.progress_total IS '本任务计划处理的秀数量(预检过滤后)'; COMMENT ON COLUMN crawl_tasks.progress_text IS '当前/最近一场秀的标题,供后台显示「正在抓什么」'; COMMENT ON COLUMN crawl_tasks.progress_at IS '最后一次进度心跳的 Unix 秒;用于判断任务是否卡死';