DjangoとCelery、RabbitMQの設定。

To: id:Ehren氏。

環境

RabbitMQ

インストール

yumでインストール。

rpm -Uvh http://download.fedora.redhat.com/pub/epel/5/i386/epel-release-5-3.noarch.rpm
yum install erlang
yum install rabbitmq-server

ちなみに下記だと僕の環境ではこけてしまう。rpmから。

wget http://www.rabbitmq.com/releases/rabbitmq-server/v1.7.2/rabbitmq-server-1.7.2-1.i386.rpmls
rpm -ivh rabbitmq-server-1.7.2-1.i386.rpm

これもこける。tar.gzから。

wget http://www.rabbitmq.com/releases/rabbitmq-server/v1.7.2/rabbitmq-server-1.7.2.tar.gz
tar zxf rabbitmq-server-1.7.2.tar.gz
cd rabbitmq-server-1.7.2
make
make install
ユーザーの作成
/usr/sbin/rabbitmqctl add_user <ユーザー名> <パスワード>
/usr/sbin/rabbitmqctl add_vhost <ホスト名>
/usr/sbin/rabbitmqctl set_permissions -p <ホスト名> <ユーザー名> "" ".*" ".*"
起動
/etc/init.d/rabbitmq-server start

chkconfigに登録。

/sbin/chkconfig rabbitmq-server
Django

Djangoのsettings.pyに。

BROKER_HOST = '127.0.0.1'
BROKER_PORT = 5672
BROKER_VHOST = '<ホスト名>'
BROKER_USER = '<ユーザー名>'
BROKER_PASSWORD = '<パスワード>'

Celery

インストール

easy_installでインストールできる。

easy_install celery
Djangoとの連携
  • INSTALLED_APPSに'celery'を追加
  • Djangoのmanage.pyでceleryのデータベースを構築する
python manage.py syncdb
  • celerydを下記コマンドを実行し起動する
python manage.py celeryd --logfile="<ログファイルのパス>"
  • 試しに使ってみる。
from celery.task import Task
from celery.registry import tasks

class MyTask(Task):
  name='MyTask'
  def run(self, **kwargs):
    u"""処理"""
    pass

tasks.register(MyTask)

公式

細かいことは下記を参考のこと!

参考

下記ブログが参考になった。