{ "info": { "author": "Shubham Jain", "author_email": "sj.iitr@gmail.com", "bugtrack_url": null, "classifiers": [], "description": "# django-scooby-profiler\n\nThis is a developer tool package to debug Django applications.\nThe aim of this package is more or less same as of Django debug toolbar,\nbut I made it because of these shortcomings of django-debug-toolbar package:\n\n1) You can not debug AJAX requests with django-debug-toolbar.\n2) If you have a big Django project, the django-debug-toolbar makes web pages more slower\nbecause it injects its own html by rendering which takes time.\n\n## With django-scooby-profiler:\n\n1) You can debug AJAX requests as well.\n2) It comes with a chrome extension named \"Scooby profiler\", so rendering happens at front-end only.\n3) You have to switch on debugging in chrome extension, only then backend will collect profiled data for all queries.\nThis way, the overhead caused by debugging is not always ON by default.\n\nHere's how the issues are mitigated in django-scooby-profiler.\nAll the profiled data collected is dumped to a backend (E.g. Redis) where the data resides temporarily.\nThe chrome extension collects those data and renders it to you for different HTTP requests.\n\n## Plugins supported\nCurrently plugins for these type of queries are supported by this package:\n\n1) **SQL**:\nDebug SQL queries happening inside the app, while serving a request. It shows all SQL queries with proper stacktrace.\nYou can group together similar queries at front-end, so that you would know what queries you can optimize.\nThis is what generally happens in case of `for` loops.\n\n2) **Memcache**:\nIt shows different operations on memcache with stacktraces.\n\n3) **Scooby logs**:\nInstead of debugging/printing on console, you can log things directly to extension.\nDo it by putting following anywhere in you code where you want to log.\n\n```python\nimport scooby\nscooby.log(\"foo\", \"bar\")\n# or\nscooby.log() # It works without giving any argument too.\n```\n\n4) **Python cProfile**:\nIf you want to use raw python profiler on your Django view, you don't need to add any extra code for that.\nThis plugin does the job for you.\n\nIf you don't find a plugin here which you think should be here, you are most welcome to contribute it to this package.\n\n## Installation\n\n```bash\n# Use pip in case of Python 2\npip3 install django-scooby-profiler \n```\n\n## Backend configuration\n\n1) Add 'scooby' to `INSTALLED_APPS` setting.\n```python\nINSTALLED_APPS = [\n ...,\n 'scooby',\n]\n```\n\n2) Add this middeware to `MIDDLEWARE`/`MIDDLEWARE_CLASSES` setting:\n```python\nMIDDLEWARE = [\n 'scooby.middleware.ScoobyMiddleware',\n ...,\n]\n```\n\n3) Add following manadatory settings:\n\n* **SCOOBY_SECRET_KEY** (type: string)\n\nYou can generate a secret key by\n```\n>>> import os\n>>> import binascii\n>>> print(binascii.hexlify(os.urandom(24)))\n0ccd512f8c3493797a23557c32db38e7d51ed74f14fa758\n```\n\n\n* **SCOOBY_REDIS_BACKEND_CONFIG** (type: dict, connection params required for redis connection)\n\nThis is not required if SCOOBY_BACKEND is set as some other backend.\nThe setting would look like\n\n```python\nSCOOBY_REDIS_BACKEND_CONFIG = {\n 'host': 'localhost',\n 'port': 6379\n}\n```\n\n4) Add scooby base url to your project's urlconf by\n\nwith Django 2.x.x:\n```\nurlpatterns = [\n ...,\n path('scooby/', include('scooby.urls')),\n]\n```\n\nwith lower versions of Django:\n```\nurlpatterns = [\n ...,\n url(r'^scooby/', include('scooby.urls')),\n]\n```\n\n### Other optional Settings\n\n* **SCOOBY_DEBUG** (type: boolean, default: DEBUG)\nWhether to debug or not regarding this package.\n\n* **SCOOBY_BACKEND** (type: string, path to the class which acts as backend, default: 'scooby.backends.RedisBackend')\nYou can specify your own backend if you don't want to use Redis.\nYou need to create a class similar to `RedisBackend` defined in `scooby/backends.py`\n\n\n## Install chrome extension\nInstall the chrome extension from https://chrome.google.com/webstore/detail/scooby-profiler/kicgfdanpohconjegfkojbpceodecjad\n\nOpen the developer tools in your browser, you will see a section named \"Scooby\".\nIt will ask for the secret key, which you need to put as same you have put in the backend.\nReload your page, you will start seeing HTTP requests with profiled data for all supported plugins.\n\n## LICENCE\nMIT\n\n\n", "description_content_type": "", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/shhaumb/django-scooby-profiler", "keywords": "django debugging profiler profiling sql tool", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "django-scooby-profiler", "package_url": "https://pypi.org/project/django-scooby-profiler/", "platform": "", "project_url": "https://pypi.org/project/django-scooby-profiler/", "project_urls": { "Homepage": "https://github.com/shhaumb/django-scooby-profiler" }, "release_url": "https://pypi.org/project/django-scooby-profiler/2.0.7/", "requires_dist": [ "redis", "pyjwt" ], "requires_python": "", "summary": "A debugging tool for Django applications which works for all HTTP requests including AJAX. Using this, you can profile Django views. It shows you all SQL, Memcache queries with proper stacktrace happening in app while serving a request, with the help of 'Scooby profiler' chrome extension.", "version": "2.0.7" }, "last_serial": 4624498, "releases": { "2.0.0": [ { "comment_text": "", "digests": { "md5": "01b8d36b31416c7fe021cfb08b209011", "sha256": "d5f91036c6a2c33569f8ca6992379084f6ad6dd0e076203d317e25e0d844607b" }, "downloads": -1, "filename": "django_scooby_profiler-2.0.0-py3-none-any.whl", "has_sig": false, "md5_digest": "01b8d36b31416c7fe021cfb08b209011", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 14132, "upload_time": "2018-09-11T18:38:26", "url": "https://files.pythonhosted.org/packages/3e/1f/62b0ac26cb02a1bde6f4e7331fc5979a8a47d83434e80153ad4e83d992a4/django_scooby_profiler-2.0.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "68f86b7a36436558cf03467d81b8a803", "sha256": "0f561d43b715f11d25668ce6a37469a539a88de3db94102ef2792ce4a99989f7" }, "downloads": -1, "filename": "django-scooby-profiler-2.0.0.tar.gz", "has_sig": false, "md5_digest": "68f86b7a36436558cf03467d81b8a803", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6726, "upload_time": "2018-09-11T18:38:28", "url": "https://files.pythonhosted.org/packages/44/72/1d36bfd6af85e5b97b5eabf3a52daaab2eae9d8ec322efc2f0c52f7cf9f9/django-scooby-profiler-2.0.0.tar.gz" } ], "2.0.1": [ { "comment_text": "", "digests": { "md5": "daf87dca0f492e064242faf6ac56f4e1", "sha256": "cfa500ff3245a4f87172cf0e0431304eb35c089066fbb6c148fe07b75ab4996b" }, "downloads": -1, "filename": "django_scooby_profiler-2.0.1-py3-none-any.whl", "has_sig": false, "md5_digest": "daf87dca0f492e064242faf6ac56f4e1", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 14358, "upload_time": "2018-09-15T21:58:35", "url": "https://files.pythonhosted.org/packages/c6/bc/cdfacabcda8785c3c81d8ee6266d683323ba545351b1f1ab40223b7d0d22/django_scooby_profiler-2.0.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "64085bbef716d3cb6120eb8f283bcd0b", "sha256": "b8e1036d3a511374b16d94e9a5d837f5ffe7f9a6a0427d5385ab51cdd0e0c9dc" }, "downloads": -1, "filename": "django-scooby-profiler-2.0.1.tar.gz", "has_sig": false, "md5_digest": "64085bbef716d3cb6120eb8f283bcd0b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8712, "upload_time": "2018-09-15T21:58:37", "url": "https://files.pythonhosted.org/packages/8a/71/2b34bad9fcd28a280cd40d54582f9212e7b2fa302f39e2b77f0a36fa2704/django-scooby-profiler-2.0.1.tar.gz" } ], "2.0.2": [ { "comment_text": "", "digests": { "md5": "e9e83c417f4f24aaac14f9c64a2178a3", "sha256": "aabc84bf568590c10b400ba595880f98e6263cad0575902322d9c80e4196c98e" }, "downloads": -1, "filename": "django_scooby_profiler-2.0.2-py3-none-any.whl", "has_sig": false, "md5_digest": "e9e83c417f4f24aaac14f9c64a2178a3", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 18009, "upload_time": "2018-09-15T22:10:48", "url": "https://files.pythonhosted.org/packages/79/74/357c5a409b15e1f9677c343f050f2bae7e236903c89775c63e62ae8bbd5d/django_scooby_profiler-2.0.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "a7f550239b4a31445902f4e1481f57d4", "sha256": "dab4c89fe552d4a5e56430bc76a5cef5cfbf5633dd2239d70622b35ddbd5cb1e" }, "downloads": -1, "filename": "django-scooby-profiler-2.0.2.tar.gz", "has_sig": false, "md5_digest": "a7f550239b4a31445902f4e1481f57d4", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9273, "upload_time": "2018-09-15T22:10:29", "url": "https://files.pythonhosted.org/packages/ed/29/b3b0c2b64891c9b32482e0f8c94c4767c6b28f52f8ab9eab7af8a22b88c8/django-scooby-profiler-2.0.2.tar.gz" } ], "2.0.3": [ { "comment_text": "", "digests": { "md5": "4da3f92ffda49b7555d38eaddfe4d05f", "sha256": "1b5c7f8bca5ae6339caba8a4881966bf9650cc64953c10ba41031e2514cdbefd" }, "downloads": -1, "filename": "django_scooby_profiler-2.0.3-py3-none-any.whl", "has_sig": false, "md5_digest": "4da3f92ffda49b7555d38eaddfe4d05f", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 18058, "upload_time": "2018-09-15T22:13:27", "url": "https://files.pythonhosted.org/packages/43/13/c6e9a1d96e1f9312f6c82ff79312d75fcc72656ba2caa43bfb0ec751e1de/django_scooby_profiler-2.0.3-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "1fa6dea8479ecda8799fb18b81771d7a", "sha256": "8efebe9537e3ab04659b6d4f5a9a1bc4f043d0ebea69319288bdb365f1cf5006" }, "downloads": -1, "filename": "django-scooby-profiler-2.0.3.tar.gz", "has_sig": false, "md5_digest": "1fa6dea8479ecda8799fb18b81771d7a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9309, "upload_time": "2018-09-15T22:13:18", "url": "https://files.pythonhosted.org/packages/f0/34/8e79f3b8e09d30e927a6c69b20069ac521e888a3f59793111122ff68d006/django-scooby-profiler-2.0.3.tar.gz" } ], "2.0.4": [ { "comment_text": "", "digests": { "md5": "0b1f2ef6dbfa36e14dba4994ca431304", "sha256": "413b4ada33c7d0b39d65eea01002c4a7053774a17807515c25c4895bf4433e9f" }, "downloads": -1, "filename": "django_scooby_profiler-2.0.4-py3-none-any.whl", "has_sig": false, "md5_digest": "0b1f2ef6dbfa36e14dba4994ca431304", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 18058, "upload_time": "2018-09-21T09:25:37", "url": "https://files.pythonhosted.org/packages/39/9f/cc7daa070c3b80869b10444923bbe09f66a6f5c56889f99db80cd042bfb0/django_scooby_profiler-2.0.4-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "fed61a9a65da84516d9fed1c9939e152", "sha256": "cd84e78744b18bfa4ab323f4a0c5faa29963caac3d8eb8de363c21ccdb434275" }, "downloads": -1, "filename": "django-scooby-profiler-2.0.4.tar.gz", "has_sig": false, "md5_digest": "fed61a9a65da84516d9fed1c9939e152", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9297, "upload_time": "2018-09-21T09:25:47", "url": "https://files.pythonhosted.org/packages/b0/b0/c936ab0df33e9f40c9cc5e7fb73d7d1d9c8c8c77d54cfcff8774fc513079/django-scooby-profiler-2.0.4.tar.gz" } ], "2.0.5": [ { "comment_text": "", "digests": { "md5": "05c9f0fb64f2ff684edf1a424f86a780", "sha256": "f69f2ef95c1a32b1c0d565d34236e82b93af3075026052b4d3d915687584ee58" }, "downloads": -1, "filename": "django_scooby_profiler-2.0.5-py3-none-any.whl", "has_sig": false, "md5_digest": "05c9f0fb64f2ff684edf1a424f86a780", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 18140, "upload_time": "2018-11-27T14:28:25", "url": "https://files.pythonhosted.org/packages/81/4e/e6581cea2b8c736dfce904c9ab3b96eea673ae9d162353f1708bd234c177/django_scooby_profiler-2.0.5-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "5a6b90e468b726ddb60cddfaeb5698d3", "sha256": "f5f89ba3c0a2c60a8cdb8b7fb1bcb426927e07ff8c796d4bdb09d54964ba7bce" }, "downloads": -1, "filename": "django-scooby-profiler-2.0.5.tar.gz", "has_sig": false, "md5_digest": "5a6b90e468b726ddb60cddfaeb5698d3", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9366, "upload_time": "2018-11-27T14:28:05", "url": "https://files.pythonhosted.org/packages/25/50/fd1f6ebd7508ab557af27e5122f80281ded70cde75060b58a0b76abb2e0b/django-scooby-profiler-2.0.5.tar.gz" } ], "2.0.6": [ { "comment_text": "", "digests": { "md5": "8ae08ea59d7737d72505f7d740581e7b", "sha256": "ce15154b934a5c12c344330d735e9d8c56ff081027955af44dfe32682f7e8728" }, "downloads": -1, "filename": "django_scooby_profiler-2.0.6-py3-none-any.whl", "has_sig": false, "md5_digest": "8ae08ea59d7737d72505f7d740581e7b", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 18151, "upload_time": "2018-12-20T11:13:38", "url": "https://files.pythonhosted.org/packages/dd/87/e1ec453dbb8f158cb84fc260da3da7ffa972266d0ddab08415cfd1f507c4/django_scooby_profiler-2.0.6-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "e114fd81bd5b83793edf7e21dcfb5bf0", "sha256": "757b99f3e1ed697a11f73a363ca025aad9f28fa3657609f361a361ee8f067269" }, "downloads": -1, "filename": "django-scooby-profiler-2.0.6.tar.gz", "has_sig": false, "md5_digest": "e114fd81bd5b83793edf7e21dcfb5bf0", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9385, "upload_time": "2018-12-20T11:13:28", "url": "https://files.pythonhosted.org/packages/93/59/de0635a52545e94b4f5a801bee6b111b43768c98ec3115af840e3d214d5a/django-scooby-profiler-2.0.6.tar.gz" } ], "2.0.7": [ { "comment_text": "", "digests": { "md5": "2281a1389bea3159c7ff3e814ae8c192", "sha256": "715eb065c4402eadc6256b2d94e042d423eb916998b9b11434e9a45d02d496fe" }, "downloads": -1, "filename": "django_scooby_profiler-2.0.7-py3-none-any.whl", "has_sig": false, "md5_digest": "2281a1389bea3159c7ff3e814ae8c192", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 18153, "upload_time": "2018-12-21T10:37:41", "url": "https://files.pythonhosted.org/packages/68/78/4c4f98c59bc54dab18e5ac7131656adc79635ab7da021b4a768598c50f95/django_scooby_profiler-2.0.7-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "5dc79122d3e5cc76ed9684fb98536f22", "sha256": "5226082988a2f9dd2df7b6193fd0c6ca5281277f2ee17f695152926f8d76a718" }, "downloads": -1, "filename": "django-scooby-profiler-2.0.7.tar.gz", "has_sig": false, "md5_digest": "5dc79122d3e5cc76ed9684fb98536f22", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9392, "upload_time": "2018-12-21T10:37:51", "url": "https://files.pythonhosted.org/packages/f4/1f/21daef8d2c547781e888159fa874419e1fe6fb3d92e9e22f976aef0ea081/django-scooby-profiler-2.0.7.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "2281a1389bea3159c7ff3e814ae8c192", "sha256": "715eb065c4402eadc6256b2d94e042d423eb916998b9b11434e9a45d02d496fe" }, "downloads": -1, "filename": "django_scooby_profiler-2.0.7-py3-none-any.whl", "has_sig": false, "md5_digest": "2281a1389bea3159c7ff3e814ae8c192", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 18153, "upload_time": "2018-12-21T10:37:41", "url": "https://files.pythonhosted.org/packages/68/78/4c4f98c59bc54dab18e5ac7131656adc79635ab7da021b4a768598c50f95/django_scooby_profiler-2.0.7-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "5dc79122d3e5cc76ed9684fb98536f22", "sha256": "5226082988a2f9dd2df7b6193fd0c6ca5281277f2ee17f695152926f8d76a718" }, "downloads": -1, "filename": "django-scooby-profiler-2.0.7.tar.gz", "has_sig": false, "md5_digest": "5dc79122d3e5cc76ed9684fb98536f22", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9392, "upload_time": "2018-12-21T10:37:51", "url": "https://files.pythonhosted.org/packages/f4/1f/21daef8d2c547781e888159fa874419e1fe6fb3d92e9e22f976aef0ea081/django-scooby-profiler-2.0.7.tar.gz" } ] }