在特定时间触发 Odoo 的预定操作(例如,每天凌晨 1 点至早上 6 点)
Trigger Odoo's Scheduled Action During Specific Hours (e.g. everyday every 1AM to 6AM)
我想要每天凌晨 1 点到 6 点执行一个接一个的预定操作。
我怎样才能做到这一点?
因为我只有"Execute Every"和"Next Execution Date"两个菜单,所以我不知道具体的营业时间范围如何。我正在使用 Odoo 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 点之间,则什么都不做;
- 检查动作是否已经运行ning,如果是,什么都不做;
- 否则,将操作标记为进行中,并执行实际操作,
完成后,将操作标记为完成。
我想要每天凌晨 1 点到 6 点执行一个接一个的预定操作。
我怎样才能做到这一点?
因为我只有"Execute Every"和"Next Execution Date"两个菜单,所以我不知道具体的营业时间范围如何。我正在使用 Odoo 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 点之间,则什么都不做;
- 检查动作是否已经运行ning,如果是,什么都不做;
- 否则,将操作标记为进行中,并执行实际操作, 完成后,将操作标记为完成。