Запустить запланированное действие Odoo в определенные часы (например, каждый день с 1:00 до 6:00) - PullRequest
0 голосов
/ 07 ноября 2018

Я хочу, чтобы запланированное действие выполнялось один за другим с 1 утра до 6 утра каждый день.

Как мне этого добиться?

Поскольку единственное меню, которое у меня есть, это «Выполнить каждое» и «Дата следующего выполнения», я не знаю, как я могу указать конкретный диапазон часов. Я использую Odoo 11.

1 Ответ

0 голосов
/ 20 ноября 2018

Вы можете использовать действие-обертку, которое планируется запускать чаще.

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 утра, ничего не делать;
  • Проверить, запущено ли действие, если да, ничего не делать;
  • Иначе, отметьте, что действие выполняется, и сделайте реальную вещь, По окончании отметьте действие как завершенное.
...