class BBS::Background

Work a board does in a thread of its own, out of the callersโ€™ way: an index loaded at boot, a catalog refreshed every hour. An error is logged (BBS.log) and the work tried again after a pause that doubles up to max_retry seconds, so a service that is down for an hour costs a few log lines, not a crashed board or a busy loop. Start one with BBS.background:

BBS.background('index') { wiki.load_index }                 # once, until it succeeds
BBS.background('catalog refresh', every: 3600) { library.refresh }