0

私はHerokuでDjangoを使用しており、私のサイトでは毎月Celeryを介してバッチメールを送信しています。私はこの労働者を月に一度しか使っていないので、いつもお金を払いたくありません。 メールを送信する前後に、を使用してワーカーを停止し、手動でheroku scale workers=0スケールアップすることができます。heroku scale workers=1

ただし、他の技術者以外のスタッフもdjangoからメールを送信するため、これらのコマンドを実行することはできません。Heroku WebプロセスでPythonからコマンドを実行して、ワーカーを停止できますか?メールを送信する前に任意のコマンドを実行できました。

4

2 に答える 2

1

heroku.py にはバグがあります。問題を参照してください: https://github.com/heroku/heroku.py/issues/10およびhttps://github.com/heroku/heroku.py/issues/4

http リソースを直接使用する簡単な回避策を作成しました。

cloud = heroku.from_key(settings.HEROKU_APIKEY)    
cloud._http_resource(method='POST', 
   resource=('apps', 'appnane', 'ps', 'scale'), 
   data={'type': 'processname', 'qty': 1})

cloud._http_resource(method='POST', resource=('apps', 'appname', 'ps', 'scale'), data={'type': 'processname', 'qty': 0})
于 2012-04-13T05:49:43.680 に答える
1

これは、Python API クライアントである heroku.py を使用して実行できます。https://github.com/heroku/heroku.pyでソースを入手できる PyPi で入手できます。

スケジューラ アドオンを使用して、プロセスをスケールアップすることなく、月に 1 回実行するようにスケジュールされたコマンドを使用してメールを送信することもできます。

于 2012-01-24T05:42:06.777 に答える