if the alert goes out after the commit, a lost mail leaves the baseline already moved. so promoting pending_body only after a second matching fetch keeps things recoverable. urlopen raises httperror on 403 and 429 before the price check is reached, so catching urlerror with a timeout and logging the failure makes the cron behavior more transparent. the marker can also let a challenge page through occasionally, and it misses yen, rupee, rsd, usd and spaced forms like 49 euro which matters if you watch non english pages.
if the alert goes out after the commit, a lost mail leaves the baseline already moved. so promoting pending_body only after a second matching fetch keeps things recoverable. urlopen raises httperror on 403 and 429 before the price check is reached, so catching urlerror with a timeout and logging the failure makes the cron behavior more transparent. the marker can also let a challenge page through occasionally, and it misses yen, rupee, rsd, usd and spaced forms like 49 euro which matters if you watch non english pages.