我要訂便當 (5): Heroku 填坑小記
在上一集的 將 Python 腳本部署上 Heroku 中,記錄了將 Python 腳本放上 Heroku 的過程,但仍然沒有將我們的 訂便當小幫手 給放上去。之前有稍微提到是因為過程中遇到了一些問題,最後決定將這些問題和找到的前人解決文記錄在這一篇,將來再遇到的時候就可以參考。
- SQLite 要改成用 PostgreSQL
- 在 Heroku 上執行 Selenium
一、SQLite 要改成用 PostgreSQL
在之前的 我要訂便當(2) —— 用 Python + Sqlite 儲存訂單 中,為了方便及簡單性,選擇了較輕便的 SQLite 來儲存我們爬回來的訂單資訊。然而,SQLite 將資料儲存在小檔案以便於攜帶的做法,在 Heroku 上將會遭遇像是各個 dyno 的資料不同步等許多問題,因此 Heroku 是不建議使用 SQLite 的。
在 Heroku 的開發文件中的 SQLite on Heroku 有關於這部分的詳細說明,並直接提到「If you were to use SQLite on Heroku, you would lose your entire database at least once every 24 hours.」同時,官方也提供了他們的建議:PostgreSQL。相較於輕便但只能同時單一寫入而且還會在 dyno 炸掉的 SQLite,PostgreSQL 的完整性更符合 Heroku 對服務的要求。
關於在 Heroku 上使用 PostgreSQL 的做法,這篇 佈署 Python Flask 網站留言板應用程式到 Heroku + PostgreSQL 資料庫系統 說明得相當詳細。
……