ruby - 我需要一个 cron 表达式
问题描述
我需要一个 cron 表达式来在5:30 am
工作日执行一些代码。
我试过这个
30 5 * * 1-5
但它在晚上 10:30 执行在互联网上搜索我找到了这个
0 30 5 ? * MON,TUE,WED,THU,FRI *
但是 ruby 向我显示一条异常消息:
C:/Ruby23-x64/lib/ruby/gems/2.3.0/gems/rufus-scheduler-3.5.2/lib/rufus/scheduler/jobs.rb:674:in `next_time_from': undefined method `next_time' for nil:NilClass (NoMethodError)
from C:/Ruby23-x64/lib/ruby/gems/2.3.0/gems/rufus-scheduler-3.5.2/lib/rufus/scheduler/jobs.rb:668:in `set_next_time'
from C:/Ruby23-x64/lib/ruby/gems/2.3.0/gems/rufus-scheduler-3.5.2/lib/rufus/scheduler/jobs.rb:636:in `initialize'
from C:/Ruby23-x64/lib/ruby/gems/2.3.0/gems/rufus-scheduler-3.5.2/lib/rufus/scheduler.rb:617:in `new'
from C:/Ruby23-x64/lib/ruby/gems/2.3.0/gems/rufus-scheduler-3.5.2/lib/rufus/scheduler.rb:617:in `do_schedule'
from C:/Ruby23-x64/lib/ruby/gems/2.3.0/gems/rufus-scheduler-3.5.2/lib/rufus/scheduler.rb:224:in `cron'
from E:/Marcos_Guerra/RubyWorkspace/calisoft-suite/Proyectos/RedmineApi/api.rb:30:in `<main>'
这是我的代码:
ENV['TZ'] = 'America/New_York'
scheduler = Rufus::Scheduler.new
scheduler.cron '0 30 5 ? * MON,TUE,WED,THU,FRI *' do
begin
# do something that might fail...
# every day of the week at 05:30 am
puts RedmineConnector.resetYourLife(user,pass)
rescue => e
end
end
sleep 3
我正在使用鲁弗斯宝石
解决方案
根据项目 README,您可以指定具有时区的 cron 作业,如下所示:
scheduler.cron '30 5 * * 1-5 America/New_York' do
# ...
end
如您所愿,这确实意味着“工作日的凌晨 5:30”。
推荐阅读
- php - Illuminate\Database\QueryException 找不到驱动程序
- javascript - CryptoJS 为不同的文件创建相同的哈希值
- python - 如何使用接口信号遍历numpy矩阵?
- c# - 将 C# 数组传递给 C++ 向量
- amazon-dynamodb - 如何在 DynamoDB 中找到按日期属性排序的实体
- asp.net-core - IdentityUser 类的基于属性的授权
- r - 带有抖动点的箱线图的额外点(ggplot2)
- python - VirtualEnv 系统找不到指定的路径:'...Python3.6\\DLL'
- asp.net-core - 在 .NET Core 库中嵌入 Blazor 网页以在 ASP.NET Core API 中提供服务
- node.js - 从 AWS Lambda 获取 AWS IoT 影子状态