【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
起動するとこんな感じのログが流れるかと思います。
【Celery】Celery 要件と環境編
【Celery】Celery インストール、Worker立ち上げ編
【Celery】Celery アプリ・タスクの定義編
【Celery】Celery タスクの追加とflower編
【Celery】Celery Task Status編
【Celery】Celery 結果をmysqlに格納する編
【Celery】Celery 複数サーバーでworkerを立ち上げてみる編
【Celery】Celery 感想編