Need to run a job at a specific time

纵然是瞬间 提交于 2020-06-26 07:14:39

问题


I'm trying to create a job in order to send a notification to a Twilio call, therefore it is important to have a robust solution that can make sure jobs are run at a specific time (I don't think being put into a queue is accurate enough).

What is the best solution for this type of a task?

These notifications need to happen at a specific time in the call. Such as "1 minute left". Therefore it needs to be able to:

  1. Run at arbitrary times (1:22PM or 2:45AM)
  2. Be defined by user input (they set the time of the call)

(It would be nice if that solution could run on Heroku)


回答1:


For the specific case that you have mentioned, I think that you should give delayed_job a try:
https://github.com/collectiveidea/delayed_job#readme

it has a run_at option where you can specify the time at which you want to run the job.




回答2:


You can use Heroku cron to run jobs either daily or hourly.

Daily cron is free, hourly cron costs $3/month: http://addons.heroku.com/cron.

Typically cron runs when you first initiate it (i.e. if you set it up at 3pm, it'll run at 3pm every day), but you can change that by sending an e-mail to support@heroku.com.

To run code in a cron, add your code to a cron.rake file and check out the cron docs here.

FYI

Heroku's own samples for cron suggest doing a time check, i.e.

if Time.now.hour % 4 == 0 # run every four hours
  ...

But, if you are running a daily cron, the code will run at a time that is likely to fail the above conditional. So, unless you are paying for hourly cron and you only want it to run specific hours, leave out that part of their sample code and just include your own code normally.

Running at Specific Times

Try delayed_job's :run_at column, which may give you the flexibility you need to run jobs at very specific times.

Heroku Docs: http://devcenter.heroku.com/articles/delayed-job




回答3:


You need to add a cronjob for that. If you are on a Linux box then you can add a cron to the crontab and specify the time at which it runs. It is very flexible. You can find the details here:
http://en.wikipedia.org/wiki/Cron

If you want to do it in a ruby way, try whenever gem:
https://github.com/javan/whenever




回答4:


Goto cron jobs in your hosting control panel



来源:https://stackoverflow.com/questions/6077250/need-to-run-a-job-at-a-specific-time

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!