首页 > 解决方案 > 在特定时间触发 Odoo 的预定操作(例如每天凌晨 1 点到 6 点)

问题描述

我希望每天从凌晨 1 点到早上 6 点一个接一个地执行计划的操作。

我怎样才能做到这一点?

由于我仅有的菜单是“执行每个”和“下一个执行日期”,我不知道如何提及具体的时间范围。我正在使用 Odoo 11。

标签: odooodoo-11

解决方案


您可以使用计划更频繁地运行的包装器操作。

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 点之间,则什么也不做;
  • 检查动作是否已经在运行,如果是,什么也不做;
  • 否则,将动作标记为进行中,并做实际的事情,一旦完成,将动作标记为完成。

推荐阅读