|
@@ -0,0 +1,75 @@
|
|
|
+==========================================================
|
|
|
+ Using Celery with Redis/Database as the messaging queue.
|
|
|
+==========================================================
|
|
|
+
|
|
|
+There's a plugin for celery that enables the use of Redis or an SQL database
|
|
|
+as the messaging queue. This is not part of celery itself, but exists as
|
|
|
+an extension to `carrot`_.
|
|
|
+
|
|
|
+.. _`carrot`: http://ask.github.com/carrot
|
|
|
+.. _`ghettoq`: http://ask.github.com/ghettoq
|
|
|
+
|
|
|
+Installation
|
|
|
+============
|
|
|
+
|
|
|
+You need to install the latest development versions of `carrot`_ and
|
|
|
+`ghettoq`_.
|
|
|
+
|
|
|
+ $ git clone git://github.com/ask/carrot.git
|
|
|
+ $ cd carrot
|
|
|
+ $ python setup.py install
|
|
|
+
|
|
|
+ $ git clone git://github.com/ask/ghettoq.git
|
|
|
+ $ cd ghettoq
|
|
|
+ $ python setup.py install
|
|
|
+
|
|
|
+Redis
|
|
|
+=====
|
|
|
+
|
|
|
+Configuration
|
|
|
+-------------
|
|
|
+
|
|
|
+::
|
|
|
+ CARROT_BACKEND = "ghettoq.toproot.Redis"
|
|
|
+
|
|
|
+ AMQP_HOST = "localhost" # Maps to redis host.
|
|
|
+ AMQP_PORT = 6379 # Maps to redis port.
|
|
|
+ AMQP_VHOST = "celery" # Maps to database name.
|
|
|
+
|
|
|
+Database
|
|
|
+========
|
|
|
+
|
|
|
+Configuration
|
|
|
+-------------
|
|
|
+
|
|
|
+The database backend uses the Django ``DATABASE_*`` settings for database
|
|
|
+configuration values.
|
|
|
+
|
|
|
+* Set your carrot backend::
|
|
|
+
|
|
|
+ CARROT_BACKEND = "ghettoq.toproot.Database"
|
|
|
+
|
|
|
+
|
|
|
+* Add ``ghettoq`` to ``INSTALLED_APPS``::
|
|
|
+
|
|
|
+ INSTALLED_APPS = ("ghettoq", )
|
|
|
+
|
|
|
+
|
|
|
+* Sync your database schema.
|
|
|
+
|
|
|
+ $ python manage.py syncdb
|
|
|
+
|
|
|
+* Or if you're not using django, but the default loader instad run
|
|
|
+ ``celeryinit``::
|
|
|
+
|
|
|
+ $ celeryinit
|
|
|
+
|
|
|
+Important notes
|
|
|
+---------------
|
|
|
+
|
|
|
+These message queues does not have the concept of exchanges and routing keys,
|
|
|
+there's only the queue entity. As a result of this you need to set the name of
|
|
|
+the exchange to be the same as the queue::
|
|
|
+
|
|
|
+ CELERY_AMQP_CONSUMER_QUEUE = "tasks"
|
|
|
+ CELERY_AMQP_EXCHANGE = "tasks"
|