odoo - 在特定时间触发 Odoo 的预定操作(例如每天凌晨 1 点到 6 点)
问题描述
我希望每天从凌晨 1 点到早上 6 点一个接一个地执行计划的操作。
我怎样才能做到这一点?
由于我仅有的菜单是“执行每个”和“下一个执行日期”,我不知道如何提及具体的时间范围。我正在使用 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 点之间,则什么也不做;
- 检查动作是否已经在运行,如果是,什么也不做;
- 否则,将动作标记为进行中,并做实际的事情,一旦完成,将动作标记为完成。
推荐阅读
- java - 求和运算期间 Cloud Firestore 中的值重复
- ios - 尽管 Apple 语言代码在 UserDefaults 中设置为 en,但 iOS 英语数字会自动更改为阿拉伯语
- prometheus - 查询最近 1 分钟的平均响应时间
- c# - 使用 .net/c# 对 Web 服务/SOAP 服务设置/应用安全策略
- python - Python for 循环;将输入打印到 14 行中。随机数
- python - Telepot MessageLoop:如何停止 run_as_thread?
- python - 将 HTML 表单中的数据存储为变量并将其打印在 html 表中(Python Flask?)
- ios - 正确对齐的iOS Header StackView?
- intellij-idea - 如何自动修复 Rust 中未使用的导入?
- ios - “使用 Apple 登录”网络流程 - 拥有多个应用程序时的自定义图标