2013-05-09 85 views
4

cron(或其衍生產品)是運行計劃編程任務的唯一方法嗎?例如:Cron是運行計劃任務的唯一方法嗎?

  1. 向客戶收取的信用卡3天前X
  2. 發送電子郵件的時間x
  3. 6小時執行XYZ命令每隔一小時

是否有良好的資源/書教如何以一種乾淨的方式實現這些功能(python,ruby(或ROR),python)?

我目前的髒方法是在CronTab中運行每分鐘的包裝腳本來檢查是否應該運行某些任務。我不太喜歡這個。我更喜歡一種能夠以編程方式實現計劃任務的方法。

+0

如果你使用一個數據庫,它可能會支持'events' – 2013-05-09 12:02:46

+0

回報率的寶石: https://github.com/jmettraux/rufus-scheduler – mccannf 2013-05-09 12:03:31

+0

感謝您的建議。 Rufus調度程序有多強大? – user2223224 2013-05-09 12:08:33

回答

1

at如果您想在未來的特定時間安排一次性工作,可能會更合適。

0

不,你CA使用Linux這樣的事情我們做

if (strtoupper(substr(php_uname(), 0, 3)) === 'WIN') { 
     // This is for Windows 
     $cmd = PHP_PATH . " " . PATH_CLASS . "/Cron/somecron.php"; 
     pclose(popen("start /B ". $cmd, "r")); 
     unset($_SESSION['something']); 
    } else { 
     //This is for Linux 
     exec("php " . PATH_CLASS . "/Cron/somecron.php > /dev/null &"); 
     unset($_SESSION['something']); 
    } 
3

對於Python設置時間表的工作,你可以使用celery

例如執行命令每隔一小時會是這樣的:

from celery.task.schedules import crontab 
from celery.decorators import periodic_task 

@periodic_task(run_every=crontab(hour=3)) 
def every_three_hour(): 
    print("This runs every three hour") 

並從現在開始執行三個小時將看起來:

from datetime import datetime 

YourTask.apply_async(args=[some, args, here], eta=datetime.now()+datetime.timedelta(hours=3)) 
0

我建議使用Ruby/ROR的delayed_job,更多信息here

非常易於安裝,也是最重要的 - 活躍的項目,這是選擇的武器大部分Rubiest的,我知道:)