{ "info": { "author": "StackImpact", "author_email": "devops@stackimpact.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 5 - Production/Stable", "Environment :: Console", "Environment :: Web Environment", "Intended Audience :: Developers", "Intended Audience :: System Administrators", "License :: OSI Approved :: BSD License", "Operating System :: OS Independent", "Programming Language :: Python", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: Implementation :: CPython", "Topic :: Software Development", "Topic :: System :: Monitoring" ], "description": "StackImpact Python Profiler\n===========================\n\nOverview\n--------\n\nStackImpact is a production-grade performance profiler built for both\nproduction and development environments. It gives developers continuous\nand historical code-level view of application performance that is\nessential for locating CPU, memory allocation and I/O hot spots as well\nas latency bottlenecks. Included runtime metrics and error monitoring\ncomplement profiles for extensive performance analysis. Learn more at\n`stackimpact.com `__.\n\n.. figure:: https://stackimpact.com/img/readme/hotspots-cpu-1.4-python.png\n :alt: dashboard\n\n dashboard\n\nFeatures\n^^^^^^^^\n\n- Continuous hot spot profiling of CPU usage, memory allocation and\n blocking calls.\n- Error and exception monitoring.\n- Health monitoring including CPU, memory, garbage collection and other\n runtime metrics.\n- Alerts on profile anomalies.\n- Team access.\n\nLearn more on the `features `__ page\n(with screenshots).\n\nHow it works\n^^^^^^^^^^^^\n\nThe StackImpact profiler agent is imported into a program and used as a\nnormal package. When the program runs, various sampling profilers are\nstarted and stopped automatically by the agent and/or programmatically\nusing the agent methods. The agent periodically reports recorded\nprofiles and metrics to the StackImpact Dashboard. The agent can also\noperate in manual mode, which should be used in development only.\n\nDocumentation\n^^^^^^^^^^^^^\n\nSee full `documentation `__ for\nreference.\n\nSupported environment\n---------------------\n\n- Linux, OS X or Windows. Python version 2.7, 3.4 or higher.\n- Memory allocation profiler and some GC metrics are only available for\n Python 3.\n- Profilers only support Linux and OS X.\n- Time (blocking call) profiler supports threads and gevent.\n- On unix systems the profilers use the following signals: SIGPROF,\n SIGALRM, SIGUSR2. Only SIGUSR2 is handled transparently, i.e. it\n should not conflict with previousely registered handlers.\n\nGetting started\n---------------\n\nCreate StackImpact account\n^^^^^^^^^^^^^^^^^^^^^^^^^^\n\nSign up for a free trial account at\n`stackimpact.com `__ (also with GitHub login).\n\nInstalling the agent\n^^^^^^^^^^^^^^^^^^^^\n\nInstall the Python agent by running\n\n::\n\n pip install stackimpact\n\nAnd import the package in your application\n\n.. code:: python\n\n import stackimpact\n\nConfiguring the agent\n^^^^^^^^^^^^^^^^^^^^^\n\nStart the agent in the main thread by specifying the agent key and\napplication name. The agent key can be found in your account's\nConfiguration section.\n\n.. code:: python\n\n agent = stackimpact.start(\n agent_key = 'agent key here',\n app_name = 'MyPythonApp')\n\nAdd the agent initialization to the worker code, e.g. wsgi.py, if\napplicable.\n\nAll initialization options:\n\n- ``agent_key`` (Required) The access key for communication with the\n StackImpact servers.\n- ``app_name`` (Required) A name to identify and group application\n data. Typically, a single codebase, deployable unit or executable\n module corresponds to one application.\n- ``app_version`` (Optional) Sets application version, which can be\n used to associate profiling information with the source code release.\n- ``app_environment`` (Optional) Used to differentiate applications in\n different environments.\n- ``host_name`` (Optional) By default, host name will be the OS\n hostname.\n- ``auto_profiling`` (Optional) If set to ``False``, disables automatic\n profiling and reporting. Focused or manual profiling should be used\n instead. Useful for environments without support for timers or\n background tasks.\n- ``debug`` (Optional) Enables debug logging.\n- ``cpu_profiler_disabled``, ``allocation_profiler_disabled``,\n ``block_profiler_disabled``, ``error_profiler_disabled`` (Optional)\n Disables respective profiler when ``True``.\n- ``include_agent_frames`` (Optional) Set to ``True`` to not exclude\n agent stack frames from profile call graphs.\n- ``auto_destroy`` (Optional) Set to ``False`` to disable agent's exit\n handlers. If necessary, call ``destroy()`` to gracefully shutdown the\n agent.\n\nFocused profiling\n^^^^^^^^^^^^^^^^^\n\nUse ``agent.profile(name)`` to instruct the agent when to start and stop\nprofiling. The agent decides if and which profiler is activated.\nNormally, this method should be used in repeating code, such as request\nor event handlers. In addition to more precise profiling, timing\ninformation will also be reported for the profiled spans. Usage example:\n\n.. code:: python\n\n span = agent.profile('span1');\n\n # your code here\n\n span.stop();\n\nAlternatively, a ``with`` statement can be used:\n\n.. code:: python\n\n with agent.profile('span1'):\n # your code ehere\n\nManual profiling\n^^^^^^^^^^^^^^^^\n\n*Manual profiling should not be used in production!*\n\nBy default, the agent starts and stops profiling automatically. Manual\nprofiling allows to start and stop profilers directly. It is suitable\nfor profiling short-lived programs and should not be used for\nlong-running production applications. Automatic profiling should be\ndisabled with ``auto_profiling: False``.\n\n.. code:: python\n\n # Start CPU profiler.\n agent.start_cpu_profiler();\n\n.. code:: python\n\n # Stop CPU profiler and report the recorded profile to the Dashboard.\n agent.stop_cpu_profiler();\n\n.. code:: python\n\n # Start blocking call profiler.\n agent.start_block_profiler();\n\n.. code:: python\n\n # Stop blocking call profiler and report the recorded profile to the Dashboard.\n agent.stop_block_profiler();\n\n.. code:: python\n\n # Start heap allocation profiler.\n agent.start_allocation_profiler();\n\n.. code:: python\n\n # Stop heap allocation profiler and report the recorded profile to the Dashboard.\n agent.stop_allocation_profiler();\n\nAnalyzing performance data in the Dashboard\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\nOnce your application is restarted, you can start observing continuous\nCPU, memory, I/O, and other hot spot profiles, execution bottlenecks as\nwell as process metrics in the\n`Dashboard `__.\n\nTroubleshooting\n^^^^^^^^^^^^^^^\n\nTo enable debug logging, add ``debug = True`` to startup options. If the\ndebug log doesn't give you any hints on how to fix a problem, please\nreport it to our support team in your account's Support section.\n\nOverhead\n--------\n\nThe agent overhead is measured to be less than 1% for applications under\nhigh load.", "description_content_type": "", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://stackimpact.com", "keywords": "cpu profiler,memory profiler,blocking call profilererror monitoringhealth metricsgarbage collection metrics", "license": "BSD", "maintainer": "", "maintainer_email": "", "name": "stackimpact", "package_url": "https://pypi.org/project/stackimpact/", "platform": "", "project_url": "https://pypi.org/project/stackimpact/", "project_urls": { "Homepage": "https://stackimpact.com" }, "release_url": "https://pypi.org/project/stackimpact/1.2.6/", "requires_dist": null, "requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, <4", "summary": "StackImpact Python Profiler", "version": "1.2.6" }, "last_serial": 5267626, "releases": { "1.0.0": [ { "comment_text": "", "digests": { "md5": "f6490935edbeeff85065b508c7a3d41f", "sha256": "16c57955705bbbb4fbace3c0c437027cce355d60ec38fdbec035aef3c9b5b673" }, "downloads": -1, "filename": "stackimpact-1.0.0.tar.gz", "has_sig": false, "md5_digest": "f6490935edbeeff85065b508c7a3d41f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14046, "upload_time": "2017-06-26T13:02:30", "url": "https://files.pythonhosted.org/packages/61/45/cc0bc362fd9f4e44d3698387fc84e868b35aa0ee67f3fe06a3f21130e772/stackimpact-1.0.0.tar.gz" } ], "1.0.1": [ { "comment_text": "", "digests": { "md5": "5ac137b1af22d76d1ce568ec91f5925e", "sha256": "0a0b12588fa9de8c123e0a426a16a3d0b7ab9daee37161b216362542e2dd4f65" }, "downloads": -1, "filename": "stackimpact-1.0.1.tar.gz", "has_sig": false, "md5_digest": "5ac137b1af22d76d1ce568ec91f5925e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14258, "upload_time": "2017-06-28T14:36:37", "url": "https://files.pythonhosted.org/packages/82/b6/08b70d7febf011a05084df14e6f18284a96419ce37d8f73fb7f96977b613/stackimpact-1.0.1.tar.gz" } ], "1.0.2": [ { "comment_text": "", "digests": { "md5": "dbb0e0dd32d0d4bda0785e12233a550d", "sha256": "73d45f28e38f19cdc02a811d8a6043019f62837092592fb42c3368251d96f091" }, "downloads": -1, "filename": "stackimpact-1.0.2.tar.gz", "has_sig": false, "md5_digest": "dbb0e0dd32d0d4bda0785e12233a550d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14306, "upload_time": "2017-06-29T10:11:42", "url": "https://files.pythonhosted.org/packages/4b/05/69ee7a28082e87f05ce0fc7c2310f2f80140be4aaa90aeb304c9e0cbc2ac/stackimpact-1.0.2.tar.gz" } ], "1.0.3": [ { "comment_text": "", "digests": { "md5": "28612aec62857a2656f5c95d83e11ed5", "sha256": "82e62eefa97bce86064a14e6e81cd6d81e6d312f85b9b34004d7a3af15014e0d" }, "downloads": -1, "filename": "stackimpact-1.0.3.tar.gz", "has_sig": false, "md5_digest": "28612aec62857a2656f5c95d83e11ed5", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, <4", "size": 14452, "upload_time": "2017-06-30T11:21:49", "url": "https://files.pythonhosted.org/packages/0b/4a/855055daa1cccff37c9a64b6dae0f96fbf1319c93f9018791f9d7971fbb6/stackimpact-1.0.3.tar.gz" } ], "1.0.4": [ { "comment_text": "", "digests": { "md5": "ab09b55fb528520e2d7c5bed358767e1", "sha256": "8b802bcb94633699ffa0568865af434c4021dcb858aa269c46d2912f5e642f6f" }, "downloads": -1, "filename": "stackimpact-1.0.4.tar.gz", "has_sig": false, "md5_digest": "ab09b55fb528520e2d7c5bed358767e1", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, <4", "size": 14857, "upload_time": "2017-07-18T07:31:47", "url": "https://files.pythonhosted.org/packages/52/3a/894b45d0a0022646fbbe0184b0847fb992ce8fad1c93d689a01adcb25178/stackimpact-1.0.4.tar.gz" } ], "1.0.5": [ { "comment_text": "", "digests": { "md5": "86b36e1d86a6b414f0abde3a9bd921ab", "sha256": "8739fd9d46c7d844bfccaa1d8b950504ac6c531c49cab2479f5a2846731bccc9" }, "downloads": -1, "filename": "stackimpact-1.0.5.tar.gz", "has_sig": false, "md5_digest": "86b36e1d86a6b414f0abde3a9bd921ab", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, <4", "size": 14965, "upload_time": "2017-08-18T15:40:31", "url": "https://files.pythonhosted.org/packages/dc/88/30b0c590ff9bc3882a0c31e856a59d46fa07634c9af925555e4b7e207b85/stackimpact-1.0.5.tar.gz" } ], "1.1.0": [ { "comment_text": "", "digests": { "md5": "5d92e96bb78f32ca5424d5ae5576547d", "sha256": "0ffb680ed80b9926bf0fc4dbff8fe2f28133f4adab349c885331b9e07f93ee50" }, "downloads": -1, "filename": "stackimpact-1.1.0.tar.gz", "has_sig": false, "md5_digest": "5d92e96bb78f32ca5424d5ae5576547d", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, <4", "size": 14562, "upload_time": "2017-09-26T06:54:12", "url": "https://files.pythonhosted.org/packages/0e/09/ea262a01007436473bd71f5b3906371f2d48b2b10872d505c904c4f61871/stackimpact-1.1.0.tar.gz" } ], "1.1.1": [ { "comment_text": "", "digests": { "md5": "e0b781c32252aa98b9fcf484fa58cea3", "sha256": "3ac29b687d0a5799852c9da655efe46e9e379447fbbe00c625370a67d69894fb" }, "downloads": -1, "filename": "stackimpact-1.1.1.tar.gz", "has_sig": false, "md5_digest": "e0b781c32252aa98b9fcf484fa58cea3", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, <4", "size": 14561, "upload_time": "2017-09-26T08:23:27", "url": "https://files.pythonhosted.org/packages/fc/db/03d0194c2b01e9d02328c857614b93e23fe88c3fbfdf2bde3ec14ec62c44/stackimpact-1.1.1.tar.gz" } ], "1.1.2": [ { "comment_text": "", "digests": { "md5": "155639a308fde2a889f936900fec04b2", "sha256": "48c2ade79fd7a3344242790b0755d509999019007dbe740f0f3168f024c4bfd6" }, "downloads": -1, "filename": "stackimpact-1.1.2.tar.gz", "has_sig": false, "md5_digest": "155639a308fde2a889f936900fec04b2", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, <4", "size": 14566, "upload_time": "2017-09-26T11:43:39", "url": "https://files.pythonhosted.org/packages/7e/ca/166bfbb7d6b3ab805e39ae138abef93b78909fb6203eceed79071510cce2/stackimpact-1.1.2.tar.gz" } ], "1.1.3": [ { "comment_text": "", "digests": { "md5": "38dec5222607ce15113310d5cfc0d1bd", "sha256": "83d16da52f6fd8c4fb7678294d30b08ddde8cb21b913412e7a9c6a37a2a97ad7" }, "downloads": -1, "filename": "stackimpact-1.1.3.tar.gz", "has_sig": false, "md5_digest": "38dec5222607ce15113310d5cfc0d1bd", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, <4", "size": 14703, "upload_time": "2017-10-02T10:22:39", "url": "https://files.pythonhosted.org/packages/18/86/72aa9baff586c785eb8926285a38ba5faae37f858f5ef9120c5aa63ac1fe/stackimpact-1.1.3.tar.gz" } ], "1.1.4": [ { "comment_text": "", "digests": { "md5": "2d78df5e1ddde10b60fef239e97445af", "sha256": "0d483b5cdd0cc0eb75af4b93806b2687c6da429724aa5238010bed2eeebe2c71" }, "downloads": -1, "filename": "stackimpact-1.1.4.tar.gz", "has_sig": false, "md5_digest": "2d78df5e1ddde10b60fef239e97445af", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, <4", "size": 14724, "upload_time": "2017-10-02T14:58:42", "url": "https://files.pythonhosted.org/packages/8a/df/bb81222899047b4bcf5777b0f51ab673254e20dc73e605eeb57fc36a22f0/stackimpact-1.1.4.tar.gz" } ], "1.1.5": [ { "comment_text": "", "digests": { "md5": "5fecfa5361cca82d8a8afe2bc259267a", "sha256": "e921df858861d01c82d1afd1a6218dfb49bdaac23ad358f13963a6d252062b68" }, "downloads": -1, "filename": "stackimpact-1.1.5.tar.gz", "has_sig": false, "md5_digest": "5fecfa5361cca82d8a8afe2bc259267a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14559, "upload_time": "2017-11-05T20:55:43", "url": "https://files.pythonhosted.org/packages/8a/b4/c3d4196523d73400c04b1d534d4fa2e8e971f6c4b4649cf29ed485345650/stackimpact-1.1.5.tar.gz" } ], "1.2.0": [ { "comment_text": "", "digests": { "md5": "cb63da60be9273220c50c21c00f67203", "sha256": "163250b3f66c1a856d8c3ff3c317faaa4eca382659e306dfc26a505097fcc0c3" }, "downloads": -1, "filename": "stackimpact-1.2.0.tar.gz", "has_sig": false, "md5_digest": "cb63da60be9273220c50c21c00f67203", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 16706, "upload_time": "2018-04-19T14:01:32", "url": "https://files.pythonhosted.org/packages/4a/6b/7916675824a70cb55ccc540d466a95b44005095c853e7b384f119e6d7804/stackimpact-1.2.0.tar.gz" } ], "1.2.1": [ { "comment_text": "", "digests": { "md5": "f78413427cc90298809df6f23cb6482c", "sha256": "4ec946a4c6843de43dcb4d843d0b1f44f14b859d97b3d8f1eead160344bccd3a" }, "downloads": -1, "filename": "stackimpact-1.2.1.tar.gz", "has_sig": false, "md5_digest": "f78413427cc90298809df6f23cb6482c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 19266, "upload_time": "2018-04-19T14:13:57", "url": "https://files.pythonhosted.org/packages/ff/be/eeaf25ef6b539cf1e8d9bfc7825780d3b93ccc6da86985e4accd5f2954ec/stackimpact-1.2.1.tar.gz" } ], "1.2.2": [ { "comment_text": "", "digests": { "md5": "34ef7366b891ad33f017dc26df919928", "sha256": "7d8cee479d0af4618d9a4f4419ecfd7134d07e19130d9beeea8c260e868df67e" }, "downloads": -1, "filename": "stackimpact-1.2.2.tar.gz", "has_sig": false, "md5_digest": "34ef7366b891ad33f017dc26df919928", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, <4", "size": 20967, "upload_time": "2018-04-19T14:20:55", "url": "https://files.pythonhosted.org/packages/02/40/7e91756064541de93f49ff478bfae8e863029393a3ecb0c5dd37d1013472/stackimpact-1.2.2.tar.gz" } ], "1.2.3": [ { "comment_text": "", "digests": { "md5": "499674df2d6494039fb35902eff065c0", "sha256": "8bd0ef15093e259a030d53594ca99f9ab29fa2ef6aa1149e2ae5be55615a8b5c" }, "downloads": -1, "filename": "stackimpact-1.2.3.tar.gz", "has_sig": false, "md5_digest": "499674df2d6494039fb35902eff065c0", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, <4", "size": 22143, "upload_time": "2018-05-09T13:41:09", "url": "https://files.pythonhosted.org/packages/db/86/4b14617ab82503cd8e11cccd3a820cf13714833360aa4d3bcced49839626/stackimpact-1.2.3.tar.gz" } ], "1.2.4": [ { "comment_text": "", "digests": { "md5": "d4ca72d963f58371dbbbbf08889e0aa2", "sha256": "dfa73808bc79928ebe7eb3d4868e290147f0f966114aec41e9c1e1be717f67a1" }, "downloads": -1, "filename": "stackimpact-1.2.4.tar.gz", "has_sig": false, "md5_digest": "d4ca72d963f58371dbbbbf08889e0aa2", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, <4", "size": 21873, "upload_time": "2018-09-25T11:27:14", "url": "https://files.pythonhosted.org/packages/98/a7/c25d6895b6c30ee075a2a67b5a498e23d463a540b3124831479449d72bba/stackimpact-1.2.4.tar.gz" } ], "1.2.5": [ { "comment_text": "", "digests": { "md5": "01a8f215fabcbef6d88084c92ac967f8", "sha256": "0489e14d8124b45f38d1f25a6d20bbacd98853e62508314b1ebeee48180fa4db" }, "downloads": -1, "filename": "stackimpact-1.2.5.tar.gz", "has_sig": false, "md5_digest": "01a8f215fabcbef6d88084c92ac967f8", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, <4", "size": 21882, "upload_time": "2019-04-02T06:37:49", "url": "https://files.pythonhosted.org/packages/b5/cc/be8e2fb6baf346e97ea70757e8420a35c50cc3384ab3481e489ae52985dd/stackimpact-1.2.5.tar.gz" } ], "1.2.6": [ { "comment_text": "", "digests": { "md5": "02c1b4adf0135042bda3a919b6000912", "sha256": "de1db817df75b072db7f6509c630d6ead912bf73cf8b07bc49624b6e75ed8b24" }, "downloads": -1, "filename": "stackimpact-1.2.6.tar.gz", "has_sig": false, "md5_digest": "02c1b4adf0135042bda3a919b6000912", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, <4", "size": 20484, "upload_time": "2019-05-14T14:13:15", "url": "https://files.pythonhosted.org/packages/b3/08/1e7408119e74f2983ed86f18bdec54b46a9c25108666c9e8c58852335724/stackimpact-1.2.6.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "02c1b4adf0135042bda3a919b6000912", "sha256": "de1db817df75b072db7f6509c630d6ead912bf73cf8b07bc49624b6e75ed8b24" }, "downloads": -1, "filename": "stackimpact-1.2.6.tar.gz", "has_sig": false, "md5_digest": "02c1b4adf0135042bda3a919b6000912", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, <4", "size": 20484, "upload_time": "2019-05-14T14:13:15", "url": "https://files.pythonhosted.org/packages/b3/08/1e7408119e74f2983ed86f18bdec54b46a9c25108666c9e8c58852335724/stackimpact-1.2.6.tar.gz" } ] }