All my statements were made under the assumption that the scheduler_run table showed absolutely no trace of the TIMOUTted task.
In any case, running the scheduler on SQLite is "safe" only for 1 or 2 workers and not with a zillion of tasks. Concurrency was never a friend of SQLite. BTW, at this point enable the debug logging of the scheduler: can be quite a long log keep it for a day or two, but if you can't reproduce the error at will, it's the only hope to see what is really going on. PS: confirmed: TIMEOUTted tasks do end up requeued with retry_failed != 0 PS2: don't underestimate the flexibility of the scheduler. Even if retry_failed was not available, you can always use another task that checks on the scheduler_task table for the "original" task and requeue it :P --