在 Heroku 執行 Python 的批次程式

之前的文章曾分享,使用 Heroku Scheduler 在雲端平台執行批次程式。不過 Heroku Scheduler 的排程比較沒有彈性。如果你的程式是 Python,則可以利用 APScheduler 套件,在 Heroku 上以 Custom Clock Processes 的方式執行批次程式。這種作法,只需將程式佈署到 Heroku 上,不用 Heroku Scheduler Add-on 的輔助,利用 APScheduler 來達到更有彈性的程式排程。

在 Heroku Dev Center 的一篇文章 Scheduled Jobs with Custom Clock Processes in Python with APScheduler,有 APScheduler 的範例程式,以及簡單的佈署教學。

將 Python 程式佈署到 Heroku 之前,要準備三個檔案:
  • Python 程式
  • requirements.txt:列出Python 使用的套件,這個檔案能讓 Heroku 在佈署後,使用 pip 自動安裝這些套件
  • Profile:這個檔案定義了這個APP的程式語言,以及是前台(web)或後台(clock)的程式
以下是 Profile 的內容。
clock: python [Python file name]

程式佈署的方法,可參照我之前的文章。成功之後,Dashboard 會多一個新的 clock Dynos。從 Dynos 右邊的按鈕就可以啟用程式。


也可以使用命令列方式啟用程式
heroku ps:scale clock=1
要看程式是否正常執行,只能用命令列方式去看 Log。這裡顯示的 Log 包括系統紀錄,以及開發者自行在程式中 print 的紀錄。
heroku logs --app [APP Name]

這個作法,不論 Python 程式如何執行,排程如何定義,由於是使用 Free Dynos,都不用錢,你要三分鐘執行一次也行。


分類: , ,

Copyright © Andy Cheng

Distributed By My Blogger Themes | Blogger Theme By NewBloggerThemes Up ↑