# project/__init__.py
from common.replacer import replace_call
from django.db.backends.mysql.client import DatabaseClient
@replace_call(DatabaseClient.runshell)
def runshell(func, self):
# Подменяет стандартный джанговски runshell, например можно добавить для mysqlclient опцию –no-auto-rehash, при частых соединениях и больших БД помогает сократить время до минимума
from common.runshell import runshell
result = runshell(self)
return result
from django.conf import settings
from common.replacer import replace_call
if settings.SQL_STACKTRACE:
# Добавляет к SQL комментарий со стектрейсом из питона, для последующего анализа
from django.db.backends import BaseDatabaseWrapper
from common.stacktracecursor import StacktraceCursorWrapper
@replace_call(BaseDatabaseWrapper.cursor)
def cursor(func, self):
result = func(self)
return StacktraceCursorWrapper(result, self)
А сейчас я хотел бы поспрашивать о библиотеках готовых. Кто и что подскажет?
Вот что я нашел:
http://pypi.python.org/pypi/monkey
http://pypi.python.org/pypi/monkeypatch https://github.com/iki/monkeypatch
https://github.com/adammck/django-monkey-patching
https://github.com/aino/django-primate
UPD:
http://pypi.python.org/pypi/pyjack/
Также можно реализацию манкипатчинга выковырить из django-debug-toolbar