This has been on my todo list of a while now, so I thought I'd trying
to figure it out.
I -think- the proper way to go about this would be in a custom
middleware with a process_exception handler that checks to see if the
exception is an instanace of the database defined exceptions. Looking
in django/db/__init__.py shows "DatabaseError" gets assigned according
to backend, so I assume it's safe to use as a check regardless of
database settings.
Turning off my database any playing I did a check on the exception
generated when the database was down, and it looks ok - atleast for
postgres:
from django.db import DatabaseError
isinstance(exception,DatabaseError) returned true.
So I though I could add this method to a middleware class:
def process_exception(self,request,exception):
# In case django doesn't send use the original request
from django.db import DatabaseError
if isinstance(exception,DatabaseError):
return HttpResponse("Database offline for maintenance - please
try back later")
return None
Unfortunately, process_excpetion() never seems to get called.
Searching track shows a ticket that explains the problem. Exceptions
in middleware don't hit the middlware exception handlers.
Unfortunately one of my middlware does hit the database on each call,
so I had to modify my middlware to catch the exception and return a
response object.
http://code.djangoproject.com/ticket/6094
Other than making sure to handle any middlware DB exceptions manually
it seems to be working ok.
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"Django users" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/django-users?hl=en
-~----------~----~----~----~------~----~------~--~---