たんたんめん日記

ソシャゲ関連のなんでもやさん備忘録

【Celery】Celery インストール、Worker立ち上げ編

下準備

Redisのインストールと起動

# yum install -y redis 
# service redis start 

pythonのredisドライバもインストール

# pip install redis

Celeryのインストール

# pip install celery

worker起動設定

# wget https://raw.github.com/celery/celery/3.0/extra/centos/celeryd -O /etc/init.d/celeryd
# chmod +x /etc/init.d/celeryd

/etc/init.d/celerydの修正

ちょっとだけ修正します。
参考:https://github.com/celery/celery/issues/1429

vim /etc/init.d/celeryd

DAEMON_OPTS="$DAEMON_OPTS --workdir=\"$CELERYD_CHDIR\""
↓修正
DAEMON_OPTS="$DAEMON_OPTS --workdir=$CELERYD_CHDIR"

起動パラメータを確認したいので「--quiet」を外しておきます。

$CELERYD_MULTI start $CELERYD_NODES $DAEMON_OPTS        \
                         --pidfile="$CELERYD_PID_FILE"      \
                         --logfile="$CELERYD_LOG_FILE"      \
                         --loglevel="$CELERYD_LOG_LEVEL"    \
                         --cmd="$CELERYD"                   \
                         --quiet                            \
                         $CELERYD_OPTS


↓ -quietを削除

$CELERYD_MULTI start $CELERYD_NODES $DAEMON_OPTS        \
                         --pidfile="$CELERYD_PID_FILE"      \
                         --logfile="$CELERYD_LOG_FILE"      \
                         --loglevel="$CELERYD_LOG_LEVEL"    \
                         --cmd="$CELERYD"                   \
                         $CELERYD_OPTS


設定

https://raw.github.com/celery/celery/3.0/extra/centos/celeryd.sysconfigを参考。

  • workerを3つ立ち上げ、それぞれ4つのタスクを同時に処理出来るようにします。
  • アプリケーションのモジュールは「MyApp」としておきます。(ソースコードは後述)
  • 起動オプションを確認したいので「--verbose」を付けておきます。参考
  • ログファイルとpidファイルは上記で設置したceleryd内で定義されているので、そちらを優先しておきます。
  • workerの起動ユーザーはvagrantで。

vim /etc/sysconfig/celeryd(新規ファイル)

# Names of nodes to start (space-separated)
CELERYD_NODES="worker01 worker02 worker03"

# Where to chdir at start. This could be the root of a virtualenv.
CELERYD_CHDIR="/var/celery"

# How to call celeryd-multi
CELERYD_MULTI="/usr/bin/celery multi"

# Extra arguments
CELERYD_OPTS="--app=MyApp --concurrency=4 --verbose"

# Create log/pid dirs, if they don't already exist
CELERY_CREATE_DIRS=1

# %n will be replaced with the nodename
#CELERYD_LOG_FILE="/var/log/celery/%n.log"
#CELERYD_PID_FILE="/var/run/celery/%n.pid"

# Workers run as an unprivileged user
CELERYD_USER=vagrant
CELERYD_GROUP=vagrant

# Loglevel
CELERYD_LOG_LEVEL='DEBUG'

# The log level output to stdout and stderr is logged as.
CELERY_REDIRECT_STDOUTS_LEVEL='DEBUG'

CELERY_REDIRECT_STDOUTS=True

# STARTED Status
CELERY_TRACK_STARTED=True

起動

# service celeryd start

起動するとこんな感じのログが流れるかと思います。

f:id:dnond:20130731215043p:plain


【Celery】Celery 要件と環境編
【Celery】Celery インストール、Worker立ち上げ編
【Celery】Celery アプリ・タスクの定義編
【Celery】Celery タスクの追加とflower編
【Celery】Celery Task Status編
【Celery】Celery 結果をmysqlに格納する編
【Celery】Celery 複数サーバーでworkerを立ち上げてみる編
【Celery】Celery 感想編