我创建了一个应用程序,它使用了whenever gem。gem创建了cron作业。我让它在本地运行,但似乎不能让它在heroku cedar上运行。执行此操作的命令是什么?跑步:
heroku run whenever --update-crontab job1
不起作用
tcomlyy61#
简短回答:使用预设程序加载项:http://addons.heroku.com/scheduler长答:当你做Heroku运行时,我们1.使测力计转动1.把你的代码放在上面1.执行命令,等待其完成1.把测力计扔掉你对crontab所做的任何修改都会立即被丢弃。一切都是短暂的,你不能在heroku上编辑文件,只需推送新代码。
3phpmpom2#
您需要添加**Heroku Scheduler**加载项。您可以直接从 Jmeter 板或使用以下命令添加它:1.安装add-on:
add-on
heroku addons:create scheduler:standard
1.在lib/tasks中创建rake任务
lib/tasks
# lib/tasks/scheduler.rake task :send_reminders => :environment do User.send_reminders end
add-ons
例如,添加**rake send_reminders,选择"Daily"和"00:00"**在每天午夜发送提醒。
rake send_reminders
"Daily"
"00:00"
y3bcpkx13#
其他的答案则指出您应该使用Heroku Scheduler附加组件,它确实能够运行后台任务,但它不支持cron的灵活性。还有另一个插件,叫做Cron To Go,它能够在一次性dynos上运行你的作业,具有cron的灵活性。你也可以为你的作业指定一个时区,并在作业失败、成功或启动时收到通知(电子邮件或webhook)。(Full披露-我为创建和运营Cron To Go的公司工作)
umuewwlo4#
如果您想:
Heroku Scheduler
这是我的解决方案黑客运行作业每分钟-假设任务在60秒内完成。
task start_my_service: :environment do 1.upto(9) do |iteration| start_time = DateTime.now Services::MyService.call end_time = DateTime.now wait_time = 60 - ((end_time - start_time) * 24 * 60 * 60).to_i sleep wait_time if wait_time > 0 end end
ut6juiuv5#
Heroku不支持cron作业。Heroku调度程序有两个缺点:
Heroku确实提供了一个替代方案:custom clock processes。但是时钟进程需要其自己的dyno,并且“由于dyno每天至少重新启动一次,因此在时钟进程启动时将需要存在一些逻辑,以确保在dyno重新启动期间不跳过作业间隔”。Simple scheduler是专门为Heroku上的日程安排而制作的宝石,但似乎有点陈腐。我最终使用了sidekiq-cron。唯一的缺点:如果sidekiq正好在计划运行某个作业时关闭,则该作业将不会运行。
5条答案
按热度按时间tcomlyy61#
简短回答:使用预设程序加载项:http://addons.heroku.com/scheduler
长答:当你做Heroku运行时,我们
1.使测力计转动
1.把你的代码放在上面
1.执行命令,等待其完成
1.把测力计扔掉
你对crontab所做的任何修改都会立即被丢弃。一切都是短暂的,你不能在heroku上编辑文件,只需推送新代码。
3phpmpom2#
您需要添加**Heroku Scheduler**加载项。
您可以直接从 Jmeter 板或使用以下命令添加它:
1.安装
add-on
:1.在
lib/tasks
中创建rake任务add-ons
列表中选择调度程序**例如,添加**
rake send_reminders
,选择"Daily"
和"00:00"
**在每天午夜发送提醒。y3bcpkx13#
其他的答案则指出您应该使用Heroku Scheduler附加组件,它确实能够运行后台任务,但它不支持cron的灵活性。
还有另一个插件,叫做Cron To Go,它能够在一次性dynos上运行你的作业,具有cron的灵活性。你也可以为你的作业指定一个时区,并在作业失败、成功或启动时收到通知(电子邮件或webhook)。
(Full披露-我为创建和运营Cron To Go的公司工作)
umuewwlo4#
如果您想:
Heroku Scheduler
这是我的解决方案黑客运行作业每分钟-假设任务在60秒内完成。
ut6juiuv5#
Heroku不支持cron作业。Heroku调度程序有两个缺点:
Heroku确实提供了一个替代方案:custom clock processes。但是时钟进程需要其自己的dyno,并且“由于dyno每天至少重新启动一次,因此在时钟进程启动时将需要存在一些逻辑,以确保在dyno重新启动期间不跳过作业间隔”。
Simple scheduler是专门为Heroku上的日程安排而制作的宝石,但似乎有点陈腐。
我最终使用了sidekiq-cron。唯一的缺点:如果sidekiq正好在计划运行某个作业时关闭,则该作业将不会运行。