ニート・アンド・カンパニー

WEBサービスやプログラミングについて勉強中。

Herokuアプリが動かなくなった -> HerokuのWEBプロセスが止まってた -> その解決方法

昨日(2012.1.7)、herokuにホスティングしてる、

Python / Django製のWEBアプリ、2chまとめ番付をマイナーアップデートしたら、

何故かこんなメッセージの画面が出て動かなくなった。   

An error occurred in the application and your page could not be served. Please try again in a few moments. If you are the application owner, check your logs for details.

文言をちょこっと修正しただけで、プログラム自体に改変は加えてないのに、

何故。。。と思って、Twitterアカウント(bot)を調べてみると、

こちらは動いている様子。

補足 :

2chまとめ番付は、1時間に一度、2chまとめサイトのRSSを読み込んで来て、
各記事のはてブ数を取得、その時間の新着ランキング1位、
最も最新の記事などをツイートしているんです。

なので、裏側のワーカープロセスはちゃんと動いてて、
WEBプロセスが死んでるって状況。 Heroku のAPP管理で見ても、普段立ち上がってるはずの
WEBプロセスが表示されていない。。

コマンドで、

heroku ps:scale web=1

ってやっても

Scaling web processes... failed
! No such type as web

って表示される。。

解決方法

色々調べた結果、以下の処理で再稼働できました。

1. Procfile作成

Procfile という名前のファイルを作って以下の内容を入れて保存
-> アプリケーションフォルダのルートに入れる。

web: python manage.py runserver 0.0.0.0:$PORT --noreload

2. herokuにpush

いつも通りですが一応。

git add .
git commit -"メッセージ"
git push heroku master

これだけでも動きません。
もう一度手動でWEBワーカーを起動してやる必要があります。

heroku ps:scale web=1

これで正常動作に戻りました。(ホッ

これまで、Procfileというファイルを作成した覚えが無いですし、 別の正常に動いているHerokuアプリのディレクトリを見ても、Procfileなんてなかったんですが、 どういうことなんでしょうか。。。

原因はわかっておりませんが、ご存知の方いらっしゃったら
お教え願えますと幸いです。

ともあれ、戻ってよかったです!