2016-07-13 9 views
5

私はヘルオクで起動したアプリを持っていますが、サーバーを起動するとセロリのビートプロセスが開始しません。セロリがヘロクで始まらないようにする

Procfile

web: gunicorn -w 4 connect.wsgi 
celery: python manage.py celeryd -c 3 --beat 

労働者は、Herokuのアプリが起動された後に開始されるように見ることができます。

$ heroku ps 

=== web (Free): gunicorn -w 4 connect.wsgi (1) 
web.1: starting 2016/07/13 16:17:18 -0400 (~ 9s ago) 

=== celery (Free): python manage.py celeryd -c 3 --beat (1) 
celery.1: up 2016/07/13 16:17:25 -0400 (~ 2s ago) 

しかし、セロリ、ビート・プロセスの実行を得るために、私が持っています明示的にHerokuで開始する:

heroku run python manage.py celerybeat 

セロリがローカルで細かく打ち上げられます。これはHerokuの限界ですか、何か間違っていますか?

答えて

4

私が誤解していない限り、Herokuは1つのアプリケーションで2つの無料のDynoインスタンスを許可します。

+0

これはあまりにも悪いことです...端末でプロセスを開始して、3回目の作業を開始できるのは変です。 –

1

@Jared Goguen:こんにちはPAL、

あなたはHerokuの中で、あなたの労働者をスケールアップする可能性の必要性、あなたはすでに上記Procfileを作成し、適切に取り付けた場合はHerokuの

に展開

メッセージブローカと結果ストアのアドオンを使用すると、アプリをプッシュして拡大縮小するだけです:

git push heroku master 

heroku ps:scale worker=1 

もちろん、任意の数のワーカーダイノスにいつでもスケールすることができます。今、あなたはローカルで行ったようタスクを実行します。

あなたはタスクがアプリケーションログで実行して表示されるはずです
heroku run python 

>>> import tasks 
>>> tasks.add.delay(1, 2) 

heroku logs -t -p worker 

出典:Heroku Guides

+0

PS:貧弱なフォーマットについては申し訳なく思っています。だから、引用符付きのコードでエラーを出しました。 –

+0

これを前に試して、「十分ではないダイノス」の問題に遭遇しました。 –

+0

@Muhlenはもう1つの答えで、あなたのアカウントをアップグレードする必要があります。もちろん、端末から起動することはできますが、同じdynoが参加することになります。 –

1

あなたの場合無料の階層herokuで1つのdynoで実行すると、最善の策はhoncho pythonのクローンをforemanのツールとして使用することですProcfileベースのアプリケーションを管理します。クローンhttps://github.com/nickstenning/honcho、これにより、セロリのビート/ワーカーに複数のプロセスをフォークすることができます。あなたはまだherokuのフリーティアメモリ512MB RAMとdynoの稼働時間によって制限されます。だから、何も迅速devに関する重すぎる良いとPOCの

本町

ピップは、本町

をインストールインストール本町を確認しますが、あなたのrequirement.txtの一部

ピップフリーズ>要件ではありません。

TXTすべてのあなたのオリジナルProcfileコンテンツProcfileHonchoストアを作成します

ProcfileHoncho

web: gunicorn myDjangoApp.wsgi --log-file - 
worker1: celery -A myDjangoApp beat -l info 
worker2: celery -A myDjangoApp worker -l info 

Procfile

web: honcho start -f ProcfileHoncho 

あなたが設定Vを経由して、あなたのブローカーのURLをロード確保あなたの無料管理ブローカーを指します。

git push heroku master 
heroku logs -t 

ログがエラーであるかどうかを確認してください。この時点で、あなたは行かなくてはなりません。

関連する問題