Skip to main content

Useful django patch for large project

Project description

Django Patchy

PyPI version

Useful django app and utils to develop large-scale web app

Requirements

  • Python (2.7)

  • Django (1.8, 1.9)

Installation

Install using pip

pip install djangopatchy

Middlewares

LongRequestMiddleware

Let’s add a middleware to calculate the time elapse for each request

  1. Add a middleware at the top:

MIDDLEWARE_CLASSES = (
    'patchy.middleware.LongRequestMiddleware',
    ...
)
  1. Add logger handler with pathcy.middleware:

Example:

'patchy.middleware': {
    'handlers': ['sentry'],
    'level': 'ERROR',
    'propagate': True
}
  1. Set the timeout threshold in settings(default to 1 second):

PATCHY_LONG_REQUEST_TIMEOUT = 2  # set the timeout to 2 seconds

Results:

  • For each web request, it has a header variable X-ELAPSED in seconds to indicate the time elapse.

X-ELAPSED: 0.005 # it means the request costs 5 ms
  • If it exceeds the PATCHY_LONG_REQUEST_TIMEOUT a error log message will be sent.

Utilities

long_sql_execute_wrapper

Let us rewrite the CursorWrapper.execute to calculate the sql process time

  1. Add the python snippets in the djangoproject/__init__.py

    # rewrite the sql operation method
    from django.db.backends import utils
    from patchy.utils import long_sql_execute_wrapper
    utils.CursorWrapper.execute = long_sql_execute_wrapper
  2. Add logger handler with pathcy.utils:

Example:

'patchy.utils': {
    'handlers': ['sentry'],
    'level': 'ERROR',
    'propagate': True
}
  1. Set the timeout threshold in settings(default to 0.05 seond, which is 50 miliseconds):

PATCHY_LONG_SQL_TIMEOUT = 0.01  # set the timeout to 10 miliseconds

Result:

  • If the sql operation exceeds the PATCHY_LONG_SQL_TIMEOUT a error log message will be sent.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

djangopatchy-0.0.5.tar.gz (3.2 kB view hashes)

Uploaded Source

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page