| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125 | 
							- ============================
 
-  Frequently Asked Questions
 
- ============================
 
- Questions
 
- =========
 
- MySQL is throwing deadlock errors, what can I do?
 
- -------------------------------------------------
 
- **Answer:** MySQL has default isolation level set to ``REPEATABLE-READ``,
 
- if you don't really need that, set it to ``READ-COMMITTED``.
 
- You can do that by adding the following to your ``my.cnf``::
 
-     [mysqld]
 
-     transaction-isolation = READ-COMMITTED
 
- For more information about InnoDBs transaction model see `MySQL - The InnoDB
 
- Transaction Model and Locking`_ in the MySQL user manual.
 
- (Thanks to Honza Kral and Anton Tsigularov for this solution)
 
- .. _`MySQL - The InnoDB Transaction Model and Locking`: http://dev.mysql.com/doc/refman/5.1/en/innodb-transaction-model.html
 
- celeryd is not doing anything, just hanging
 
- --------------------------------------------
 
- **Answer:** See `MySQL is throwing deadlock errors, what can I do?`_.
 
- I'm having ``IntegrityError: Duplicate Key`` errors. Why?
 
- ----------------------------------------------------------
 
- **Answer:** See `MySQL is throwing deadlock errors, what can I do?`_.
 
- Thanks to howsthedotcom.
 
- Why won't my Task run?
 
- ----------------------
 
- **Answer:** Did you register the task in the applications ``tasks.py`` module?
 
- (or in some other module Django loads by default, like ``models.py``?).
 
- Also there might be syntax errors preventing the tasks module being imported.
 
- You can find out if the celery daemon is able to run the task by executing the
 
- task manually:
 
-     >>> from myapp.tasks import MyPeriodicTask
 
-     >>> MyPeriodicTask.delay()
 
- Watch celery daemons logfile (or output if not running as a daemon), to see
 
- if it's able to find the task, or if some other error is happening.
 
- Why won't my Periodic Task run?
 
- -------------------------------
 
- See `Why won't my Task run?`_.
 
- Can I send some tasks to only some servers?
 
- --------------------------------------------
 
- As of now there is only one use-case that works like this, and that is
 
- tasks of type ``A`` can be sent to servers ``x`` and ``y``, while tasks
 
- of type ``B`` can be sent to server ``z``. One server can't handle more than
 
- one routing_key, but this is coming in a later release.
 
- Say you have two servers, ``x``, and ``y`` that handles regular tasks,
 
- and one server ``z``, that only handles feed related tasks, you can use this
 
- configuration:
 
-     * Servers ``x`` and ``y``: settings.py:
 
-     .. code-block:: python
 
-         AMQP_SERVER = "rabbit"
 
-         AMQP_PORT = 5678
 
-         AMQP_USER = "myapp"
 
-         AMQP_PASSWORD = "secret"
 
-         AMQP_VHOST = "myapp"
 
-         CELERY_AMQP_CONSUMER_QUEUE = "regular_tasks"
 
-         CELERY_AMQP_EXCHANGE = "tasks"
 
-         CELERY_AMQP_PUBLISHER_ROUTING_KEY = "task.regular"
 
-         CELERY_AMQP_CONSUMER_ROUTING_KEY = "task.#"
 
-         CELERY_AMQP_EXCHANGE_TYPE = "topic"
 
-     * Server ``z``: settings.py:
 
-     .. code-block:: python
 
-         AMQP_SERVER = "rabbit"
 
-         AMQP_PORT = 5678
 
-         AMQP_USER = "myapp"
 
-         AMQP_PASSWORD = "secret"
 
-         AMQP_VHOST = "myapp"
 
-         
 
-         CELERY_AMQP_EXCHANGE = "tasks"
 
-         CELERY_AMQP_PUBLISHER_ROUTING_KEY = "task.regular"
 
-         CELERY_AMQP_EXCHANGE_TYPE = "topic"
 
-         # This is the settings different for this server:
 
-         CELERY_AMQP_CONSUMER_QUEUE = "feed_tasks"
 
-         CELERY_AMQP_CONSUMER_ROUTING_KEY = "feed.#"
 
- Now to make a Task run on the ``z`` server you need to set its
 
- ``routing_key`` attribute so it starts with the words ``"task.feed."``:
 
- .. code-block:: python
 
-     from feedaggregator.models import Feed
 
-     from celery.task import Task
 
-     class FeedImportTask(Task):
 
-         name = "import_feed"
 
-         routing_key = "feed.importer"
 
-         def run(self, feed_url):
 
-             # something importing the feed
 
-             Feed.objects.import_feed(feed_url)
 
- You can also override this using the ``routing_key`` argument to
 
- :func:`celery.task.apply_async`:
 
-     >>> from celery.task import apply_async
 
-     >>> from myapp.tasks import RefreshFeedTask
 
-     >>> apply_async(RefreshFeedTask, args=["http://cnn.com/rss"],
 
-     ...             routing_key="feed.importer")
 
 
  |