百度推送配额每天重置,不用就清零

先说结论:百度主动推送的配额按天算,当天用不完,过了半夜一分不剩。站里有历史文章还没推过的,别攒,当天有额度就补推。

我本来以为推送修好就完事了。两天下来,是数字让我改的看法。

起因:6 篇文章,一篇都没推出去

9 月底查出脚本发文绕过了 WordPress 的钩子,连发 6 篇,百度一条都没收到,这事单独写过。推送修好之后欠下 6 篇旧账,其中一篇白天验证钩子时顺手推掉了,还剩 5 篇。

当晚 23 点多,剩下 5 篇挨个补。每推一篇,百度的响应里都带一个 remain:今天还剩几条额度。推完,这个数从 6 掉到 2:

wordpress-baidu-auto-push        remain 6
python-cjk-font-pitfalls         remain 5
wordpress-launch-checklist       remain 4
ssl-cert-renewal-403             remain 3
nginx-return-server-vs-location  remain 2

这不是我本地记的账,是百度服务器原样回的。它扣一条,这边掉一格。

第二天,数字对不上了

第二天下午手动提交了一次。推送前,百度报的剩余额度是 8。

8?昨天收盘不是剩 2 吗。

两个数一对照,答案就出来了:过半夜,配额重置了。要是累计余额,这个数只会比 2 小,不可能自己涨回去。

晚上我把全站推送记录从数据库拉出来排了一遍。WordPress 每推一篇留一行账:哪篇文章、几点推的、成没成、当时报的剩余额度:

mysql -e "SELECT meta_value FROM wp_postmeta
WHERE meta_key='_zz_baidu_push'"

8 篇排下来,remain 从 8 一格一格到 0。额度烧完再推一条,百度回得很直白:

{"error":400,"message":"over quota"}

今天超了。不通融,也不许借明天的。第二天早上它会重新满上,但昨天的作废就是作废了。

烧到 0 不是故意的。当晚在后台做推送提示的验证:草稿转发布、老文章更新、额度刚好用尽、推送失败,四个场景挨个过,全部通过,最后几条额度也顺手烧干净了。烧完之后,编辑页顶部弹的失败提示长这样:

【百度推送:失败】今日配额已用尽

点重试还是这一句。它认定你今天完了,就得等到明天。

alt:两天的配额账本对照,9 月 29 日收盘剩 2,9 月 30 日重置后烧到 0,再推报 over quota
alt:两天的配额账本对照,9 月 29 日收盘剩 2,9 月 30 日重置后烧到 0,再推报 over quota

配额不是余额,是当天的菜票

很多人的第一反应是把配额省着用:一天 10 条,正经发文用不了几条,留点以防万一。我算完这笔账之后,想法掉了个头——省下来的部分到半夜就是零,省,等于扔。

算笔账更明白。我一天发文一两篇,每篇自动推一条,加上手动测试,满打满算三四条。10 条的额度天天剩一大半,攒五天,白扔三十来条——够把站上欠账的老文章补一遍还有富余。

alt:余额思维和日清思维对照,攒配额过半夜清零,当天用完才不亏
alt:余额思维和日清思维对照,攒配额过半夜清零,当天用完才不亏

现在我的用法就三句话:当天发文,自动推,别关;历史文章有欠账,当天补推;手动测试悠着点,点一次真扣一条。补推就一条命令:

# 只补推送历史文章,不动正文
python publish_article.py --push

两条边别踩。一,同一篇别反复推——推送函数里带 6 小时去重,防的就是手抖白烧额度,那个坑这篇写过。二,额度花完也不等于收录,我的站 16 篇推完,第 9 天收录还是 0,数据在这。

我这个新站的额度是每天 10 条,别家是不是这个数我没深究。逻辑是一样的:它发的是日清额度,要的是你天天交作业,不是攒到周末一起交。

现在睡前看一眼 remain。剩得多,说明今天的活干少了。

发表评论