[Heroku][Flask] Couldn't find that process type (web).

[Heroku][Flask] Couldn't find that process type (web).

問題描述

朋友想製造一個 LINE 機器人,自學學習撰寫 Python Flask Web Framework ,並部署到 Heroku 上,預期傳訊息時機器人會自動回覆相同的訊息內容,但卻沒有顯示在對話視窗內,於是拜託我幫他看。

首先要看的就是 Heroku console log ,下 heroku logs --tail 從裡面一定可以找出一些蛛絲馬跡,果不其然看到一些訊息,從日誌檔可得知程式是包版成功的,但很顯然程式發生錯誤, Web server 根本就沒有啟動,官方網站給出的解決方法是下 heroku ps:scale web=1 這組指令,以手動方式將 Web server 程序部署到他們的引擎 dyno 上。

Heroku 上日誌檔

1
2
2022-03-12T05:20:20.000000+00:00 app[api]: Build succeeded
2022-03-12T05:20:30.962092+00:00 heroku[router]: at=error code=H14 desc="No web processes running" method=GET path="/favicon.ico" host=groupbuyingchatbot.herokuapp.com request_id=808970d4-836d-40e6-9f8a-1e3b3a999199 fwd="42.77.131.204" dyno= connect= service= status=503 bytes= protocol=https

Heroku H14 錯誤代碼解釋

1
2
3
4
5
6
7
H14 - No web dynos running
This is most likely the result of scaling your web dynos down to 0 dynos. To fix it, scale your web dynos to 1 or more dynos:

heroku ps:scale web=1
Use the heroku ps command to determine the state of your web dynos.

2010-10-06T21:51:37-07:00 heroku[router]: at=error code=H14 desc="No web processes running" method=GET path="/" host=myapp.herokuapp.com fwd=17.17.17.17 dyno= connect= service= status=503 bytes=

你以這樣就解決問題了嗎?並沒有!我下了這道指令回覆訊息仍是找不是 Web Server 的程序,後續我確認了 Python 有沒有語法上的錯誤、部署腳本、套件 requirements.txt,也嘗試在本機上執行,皆無問題。

1
2
3
gordonfang$ heroku ps:scale web=1
Scaling dynos... !
! couldn't find that process type (web).

解決方法

隔一天再次檢查才發現原來朋友寫的 Procfile 多了副檔名,是 Procfile.txt , Procfile 是 Heroku 的部署腳本,告訴他包版完後要跑哪一個檔案將 Web Server 啟動起來,重新調整完後機器人就能順利回覆訊息。

Image

1
2
3
4
@handler.add(MessageEvent, message=TextMessage)
def handle_message(event):
message = text=event.message.text
line_bot_api.reply_message(event.reply_token, TextSendMessage(message))