12

Rails アプリでAWS Elastic Beanstalkを使い始めたばかりで、バックグラウンド ジョブに Resque gem を使用する必要があります。しかし、Elastic Beanstalk で Resque ワーカーを実行する方法を検索するためのあらゆる努力にもかかわらず、方法を理解できませんでした。

AWS Elastic Beanstalk で Resque を使用して Rails バックグラウンドジョブを実行するにはどうすればよいですか? それらを Elastic Beanstalk コンテナでサービスとして実行することについて説明していますが、それでも非常に紛らわしいです。

ここに私の ebextentions resque.config ファイルがあります:

services: 
  sysvinit:
  resque_worker:
    enabled: true
    ensureRunning: true
    commands: 
      resque_starter: 
        rake resque:work QUEUE='*'

編集 今、私の resque.config ファイルは次のようになります。

container_commands:
  resque_starter: "rake resque:work QUEUE='*'"
services: 
  sysvinit:
    resque_worker:
      enabled: true
        ensureRunning: true
      commands: 
        resque_starter

そして、それはまだ機能していません。 編集2

container_commands:
  resque_starter: 
    command: "rake resque:work QUEUE=sqs_message_sender_queue"
    cwd: /var/app/current/
    ignoreErrors: true

それでも0人のワーカーが表示されます。

4

2 に答える 2

4

まず第一に、supervisord を使用して resque を実行することをお勧めします。これにより、プロセスが停止した場合にワーカーが再起動されるようになります。

毎回デプロイするときにコマンドを実行する方法について: beanstalk インスタンスに ssh でログインし、フォルダに移動します: /opt/elasticbeanstalk/hooks/appdeploy/ ここに、デプロイするたびに実行されるフックのリストがあります。また、ここには、デプロイするたびに実行される独自のスクリプトを配置できます。また、同じアプローチで、アプリケーション サーバーの再起動を担当するスクリプトをフックに配置し、ssh による接続なしでバックグラウンド ジョブを再起動することができます。

別のオプションとして、コマンドの代わりに container_commands を使用して、バックグラウンド ワーカーを開始するコマンドを配置します。

また、 beanstalkのカスタマイズについて私が見つけた最高の記事をご覧ください。 . \

于 2013-10-30T08:31:27.330 に答える