LoopingCall
будет запускать вызываемый вами вызов каждые N секунд, где N - это номер, который вы передаете для запуска.Он не ожидает N секунд после завершения предыдущего вызова, он ожидает N секунд после начала предыдущего вызова.Другими словами, он пытается остаться в интервале, определяемом N и временем начала, выполняя вызов в N секунд, N * 2 секунд, N * 3 секунд и т. Д.
Если процесс слишком занятчтобы сделать один из вызовов, он пропустит эту итерацию.Если вызов возвращает Deferred и Deferred не сработал в следующем интервале, он пропустит эту итерацию.
Таким образом, вы можете приблизиться к желаемому поведению, вернув d
в конце loop
, но LoopingCall
не собирается ждать 2 секунды после пожара Отложенного.Он будет ожидать следующего кратного N секунд, считая от времени начала, и затем снова вызовет функцию.