From 8b57842ea322507f570f6ced6052630b7ef30a99 Mon Sep 17 00:00:00 2001 From: Selwin Ong Date: Mon, 23 Apr 2018 09:09:00 +0700 Subject: [PATCH] Modified docs to use emphasize the best way to configure exception handlers. --- docs/docs/exceptions.md | 25 +++++++------------------ 1 file changed, 7 insertions(+), 18 deletions(-) diff --git a/docs/docs/exceptions.md b/docs/docs/exceptions.md index 8b1080c..f0d217d 100644 --- a/docs/docs/exceptions.md +++ b/docs/docs/exceptions.md @@ -8,37 +8,26 @@ background, how do you get notified of these exceptions? ## Default: the `failed` queue -The default safety net for RQ is the `failed` queue. Every job that fails +The default safety net for RQ is the `failed` queue. Every job that fails execution is stored in here, along with its exception information (type, -value, traceback). While this makes sure no failing jobs "get lost", this is +value, traceback). While this makes sure no failing jobs "get lost", this is of no use to get notified pro-actively about job failure. ## Custom exception handlers Starting from version 0.3.1, RQ supports registering custom exception -handlers. This makes it possible to replace the default behaviour (sending +handlers. This makes it possible to replace the default behaviour (sending the job to the `failed` queue) altogether, or to take additional steps when an exception occurs. -To do this, register your custom exception handler to an RQ worker as follows: +This is how you register custom exception handler(s) to an RQ worker: {% highlight python %} -with Connection(): - q = Queue() - w = Worker([q]) - w.push_exc_handler(my_handler) - w.work() -{% endhighlight %} - -While the exception handlers are a FILO stack, most times you only want to -register a single handler. Therefore, for convenience, you can pass it to the -constructor directly, too: +from rq.handlers import move_to_failed_queue # RQ's default exception handler -{% highlight python %} -with Connection(): - w = Worker([q], exception_handlers=[my_handler, self.move_to_failed_queue]) - ... +w = Worker([q], exception_handlers=[my_handler, move_to_failed_queue]) +... {% endhighlight %} The handler itself is a function that takes the following parameters: `job`,