Вы можете использовать действие-обертку, которое планируется запускать чаще.
def action_function():
# you will need to store a value (is_running: True|False) in the database, maybe in ir.config_parameter
if current_hour not in (1, 2, 3, 4, 5):
return None
elif is_running:
return None
else:
# Mark that the action is in process, have to commit to the database
is_running = True
self.env.cr.commit()
# Then call your actual action function
do_some_real_thing()
# Mark that the action is done
is_running = False
Обычно действие обертки, описанное ниже, повторяется часто, как каждые 10 минут.
- Проверьте время, если не между 1 утра и 6 утра, ничего не делать;
- Проверить, запущено ли действие, если да, ничего не делать;
- Иначе, отметьте, что действие выполняется, и сделайте реальную вещь,
По окончании отметьте действие как завершенное.