scout-apm 3.3.0__cp38-cp38-musllinux_1_2_i686.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- scout_apm/__init__.py +0 -0
- scout_apm/api/__init__.py +197 -0
- scout_apm/async_/__init__.py +1 -0
- scout_apm/async_/api.py +41 -0
- scout_apm/async_/instruments/__init__.py +0 -0
- scout_apm/async_/instruments/jinja2.py +13 -0
- scout_apm/async_/starlette.py +101 -0
- scout_apm/bottle.py +86 -0
- scout_apm/celery.py +153 -0
- scout_apm/compat.py +104 -0
- scout_apm/core/__init__.py +99 -0
- scout_apm/core/_objtrace.cpython-38-i386-linux-gnu.so +0 -0
- scout_apm/core/agent/__init__.py +0 -0
- scout_apm/core/agent/commands.py +250 -0
- scout_apm/core/agent/manager.py +319 -0
- scout_apm/core/agent/socket.py +211 -0
- scout_apm/core/backtrace.py +116 -0
- scout_apm/core/cli/__init__.py +0 -0
- scout_apm/core/cli/core_agent_manager.py +32 -0
- scout_apm/core/config.py +404 -0
- scout_apm/core/context.py +140 -0
- scout_apm/core/error.py +95 -0
- scout_apm/core/error_service.py +167 -0
- scout_apm/core/metadata.py +66 -0
- scout_apm/core/n_plus_one_tracker.py +41 -0
- scout_apm/core/objtrace.py +24 -0
- scout_apm/core/platform_detection.py +66 -0
- scout_apm/core/queue_time.py +99 -0
- scout_apm/core/sampler.py +149 -0
- scout_apm/core/samplers/__init__.py +0 -0
- scout_apm/core/samplers/cpu.py +76 -0
- scout_apm/core/samplers/memory.py +23 -0
- scout_apm/core/samplers/thread.py +41 -0
- scout_apm/core/stacktracer.py +30 -0
- scout_apm/core/threading.py +56 -0
- scout_apm/core/tracked_request.py +328 -0
- scout_apm/core/web_requests.py +167 -0
- scout_apm/django/__init__.py +7 -0
- scout_apm/django/apps.py +137 -0
- scout_apm/django/instruments/__init__.py +0 -0
- scout_apm/django/instruments/huey.py +30 -0
- scout_apm/django/instruments/sql.py +140 -0
- scout_apm/django/instruments/template.py +35 -0
- scout_apm/django/middleware.py +211 -0
- scout_apm/django/request.py +144 -0
- scout_apm/dramatiq.py +42 -0
- scout_apm/falcon.py +142 -0
- scout_apm/flask/__init__.py +118 -0
- scout_apm/flask/sqlalchemy.py +28 -0
- scout_apm/huey.py +54 -0
- scout_apm/hug.py +40 -0
- scout_apm/instruments/__init__.py +21 -0
- scout_apm/instruments/elasticsearch.py +263 -0
- scout_apm/instruments/jinja2.py +127 -0
- scout_apm/instruments/pymongo.py +105 -0
- scout_apm/instruments/redis.py +77 -0
- scout_apm/instruments/urllib3.py +80 -0
- scout_apm/rq.py +85 -0
- scout_apm/sqlalchemy.py +38 -0
- scout_apm-3.3.0.dist-info/LICENSE +21 -0
- scout_apm-3.3.0.dist-info/METADATA +82 -0
- scout_apm-3.3.0.dist-info/RECORD +65 -0
- scout_apm-3.3.0.dist-info/WHEEL +5 -0
- scout_apm-3.3.0.dist-info/entry_points.txt +2 -0
- scout_apm-3.3.0.dist-info/top_level.txt +1 -0
scout_apm/rq.py
ADDED
@@ -0,0 +1,85 @@
|
|
1
|
+
# coding=utf-8
|
2
|
+
|
3
|
+
import datetime as dt
|
4
|
+
import logging
|
5
|
+
|
6
|
+
import wrapt
|
7
|
+
from rq import SimpleWorker as RqSimpleWorker
|
8
|
+
from rq import Worker as RqWorker
|
9
|
+
from rq.job import Job
|
10
|
+
from rq.worker import HerokuWorker as RqHerokuWorker
|
11
|
+
|
12
|
+
import scout_apm.core
|
13
|
+
from scout_apm.core.tracked_request import TrackedRequest
|
14
|
+
|
15
|
+
install_attempted = False
|
16
|
+
installed = None
|
17
|
+
|
18
|
+
logger = logging.getLogger(__name__)
|
19
|
+
|
20
|
+
|
21
|
+
def ensure_scout_installed():
|
22
|
+
global install_attempted, installed
|
23
|
+
|
24
|
+
if not install_attempted:
|
25
|
+
install_attempted = True
|
26
|
+
installed = scout_apm.core.install()
|
27
|
+
|
28
|
+
|
29
|
+
class WorkerMixin(object):
|
30
|
+
def __init__(self, *args, **kwargs):
|
31
|
+
global installed
|
32
|
+
ensure_scout_installed()
|
33
|
+
if installed:
|
34
|
+
ensure_job_instrumented()
|
35
|
+
super(WorkerMixin, self).__init__(*args, **kwargs)
|
36
|
+
|
37
|
+
|
38
|
+
class Worker(WorkerMixin, RqWorker):
|
39
|
+
pass
|
40
|
+
|
41
|
+
|
42
|
+
class SimpleWorker(WorkerMixin, RqSimpleWorker):
|
43
|
+
pass
|
44
|
+
|
45
|
+
|
46
|
+
class HerokuWorker(WorkerMixin, RqHerokuWorker):
|
47
|
+
pass
|
48
|
+
|
49
|
+
|
50
|
+
job_instrumented = False
|
51
|
+
|
52
|
+
|
53
|
+
def ensure_job_instrumented():
|
54
|
+
global job_instrumented
|
55
|
+
if job_instrumented:
|
56
|
+
return
|
57
|
+
job_instrumented = True
|
58
|
+
Job.perform = wrap_perform(Job.perform)
|
59
|
+
|
60
|
+
|
61
|
+
@wrapt.decorator
|
62
|
+
def wrap_perform(wrapped, instance, args, kwargs):
|
63
|
+
global installed
|
64
|
+
if not installed:
|
65
|
+
return wrapped(*args, **kwargs)
|
66
|
+
|
67
|
+
tracked_request = TrackedRequest.instance()
|
68
|
+
tracked_request.is_real_request = True
|
69
|
+
tracked_request.tag("task_id", instance.get_id())
|
70
|
+
tracked_request.tag("queue", instance.origin)
|
71
|
+
# rq strips tzinfo from enqueued_at during serde in at least some cases
|
72
|
+
# internally everything uses UTC naive datetimes, so we operate on that
|
73
|
+
# assumption here.
|
74
|
+
if instance.enqueued_at.tzinfo is None:
|
75
|
+
queued_at = instance.enqueued_at.replace(tzinfo=dt.timezone.utc)
|
76
|
+
queue_time = (dt.datetime.now(dt.timezone.utc) - queued_at).total_seconds()
|
77
|
+
tracked_request.tag("queue_time", queue_time)
|
78
|
+
operation = "Job/{}".format(instance.func_name)
|
79
|
+
tracked_request.operation = operation
|
80
|
+
with tracked_request.span(operation=operation):
|
81
|
+
try:
|
82
|
+
return wrapped(*args, **kwargs)
|
83
|
+
except Exception:
|
84
|
+
tracked_request.tag("error", "true")
|
85
|
+
raise
|
scout_apm/sqlalchemy.py
ADDED
@@ -0,0 +1,38 @@
|
|
1
|
+
# coding=utf-8
|
2
|
+
|
3
|
+
from sqlalchemy import event
|
4
|
+
|
5
|
+
from scout_apm.core.tracked_request import TrackedRequest
|
6
|
+
|
7
|
+
|
8
|
+
def before_cursor_execute(conn, cursor, statement, parameters, context, executemany):
|
9
|
+
if executemany:
|
10
|
+
operation = "SQL/Many"
|
11
|
+
else:
|
12
|
+
operation = "SQL/Query"
|
13
|
+
tracked_request = TrackedRequest.instance()
|
14
|
+
span = tracked_request.start_span(operation=operation)
|
15
|
+
span.tag("db.statement", statement)
|
16
|
+
|
17
|
+
|
18
|
+
def after_cursor_execute(conn, cursor, statement, parameters, context, executemany):
|
19
|
+
tracked_request = TrackedRequest.instance()
|
20
|
+
span = tracked_request.current_span()
|
21
|
+
if span is not None:
|
22
|
+
if tracked_request.n_plus_one_tracker.should_capture_backtrace(
|
23
|
+
sql=statement,
|
24
|
+
duration=span.duration(),
|
25
|
+
count=(1 if not executemany else len(parameters)),
|
26
|
+
):
|
27
|
+
span.capture_backtrace()
|
28
|
+
tracked_request.stop_span()
|
29
|
+
|
30
|
+
|
31
|
+
def instrument_sqlalchemy(engine):
|
32
|
+
# We can get in the situation where we double-instrument the cursor. Avoid
|
33
|
+
# it by setting a flag and checking it before adding these listeners
|
34
|
+
if getattr(engine, "_scout_instrumented", False):
|
35
|
+
return
|
36
|
+
event.listen(engine, "before_cursor_execute", before_cursor_execute)
|
37
|
+
event.listen(engine, "after_cursor_execute", after_cursor_execute)
|
38
|
+
engine._scout_instrumented = True
|
@@ -0,0 +1,21 @@
|
|
1
|
+
The MIT License (MIT)
|
2
|
+
|
3
|
+
Copyright (c) 2018-2019 Zimuth, Inc.
|
4
|
+
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
7
|
+
in the Software without restriction, including without limitation the rights
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
10
|
+
furnished to do so, subject to the following conditions:
|
11
|
+
|
12
|
+
The above copyright notice and this permission notice shall be included in
|
13
|
+
all copies or substantial portions of the Software.
|
14
|
+
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
21
|
+
THE SOFTWARE.
|
@@ -0,0 +1,82 @@
|
|
1
|
+
Metadata-Version: 2.1
|
2
|
+
Name: scout_apm
|
3
|
+
Version: 3.3.0
|
4
|
+
Summary: Scout Application Performance Monitoring Agent
|
5
|
+
Home-page: https://github.com/scoutapp/scout_apm_python
|
6
|
+
Author: Scout
|
7
|
+
Author-email: support@scoutapm.com
|
8
|
+
License: MIT
|
9
|
+
Project-URL: Documentation, https://docs.scoutapm.com/#python-agent
|
10
|
+
Project-URL: Changelog, https://github.com/scoutapp/scout_apm_python/blob/master/CHANGELOG.md
|
11
|
+
Keywords: apm,performance monitoring,development
|
12
|
+
Classifier: Development Status :: 5 - Production/Stable
|
13
|
+
Classifier: Framework :: Bottle
|
14
|
+
Classifier: Framework :: Django
|
15
|
+
Classifier: Framework :: Django :: 3.2
|
16
|
+
Classifier: Framework :: Django :: 4.0
|
17
|
+
Classifier: Framework :: Django :: 4.1
|
18
|
+
Classifier: Framework :: Django :: 4.2
|
19
|
+
Classifier: Framework :: Flask
|
20
|
+
Classifier: Intended Audience :: Developers
|
21
|
+
Classifier: Topic :: System :: Monitoring
|
22
|
+
Classifier: License :: OSI Approved :: MIT License
|
23
|
+
Classifier: Operating System :: MacOS
|
24
|
+
Classifier: Operating System :: POSIX
|
25
|
+
Classifier: Operating System :: POSIX :: Linux
|
26
|
+
Classifier: Programming Language :: Python :: 3.8
|
27
|
+
Classifier: Programming Language :: Python :: 3.9
|
28
|
+
Classifier: Programming Language :: Python :: 3.10
|
29
|
+
Classifier: Programming Language :: Python :: 3.11
|
30
|
+
Classifier: Programming Language :: Python :: 3.12
|
31
|
+
Requires-Python: >=3.8, <4
|
32
|
+
Description-Content-Type: text/markdown
|
33
|
+
License-File: LICENSE
|
34
|
+
Requires-Dist: asgiref
|
35
|
+
Requires-Dist: psutil>=5
|
36
|
+
Requires-Dist: urllib3~=2.2.0
|
37
|
+
Requires-Dist: certifi
|
38
|
+
Requires-Dist: wrapt<2.0,>=1.10
|
39
|
+
|
40
|
+
# Scout Python APM Agent
|
41
|
+
|
42
|
+
[](https://github.com/scoutapp/scout_apm_python/actions?workflow=CI)
|
43
|
+
[](https://pypi.python.org/pypi/scout-apm)
|
44
|
+
[](https://docs.scoutapm.com/#python-agent)
|
45
|
+
[](https://github.com/python/black)
|
46
|
+
|
47
|
+
Monitor the performance of Python Django apps, Flask apps, and Celery workers with Scout's [Python APM Agent](https://www.scoutapm.com). Detailed performance metrics and transaction traces are collected once the `scout-apm` package is installed and configured.
|
48
|
+
|
49
|
+
## Requirements
|
50
|
+
|
51
|
+
Python 3.8+.
|
52
|
+
For legacy Python versions, including 2.7 and 3.4+, pin scout-apm to <=2.26.1.
|
53
|
+
|
54
|
+
Scout APM has integrations for the following frameworks:
|
55
|
+
|
56
|
+
* Bottle 0.12+
|
57
|
+
* Celery 3.1+
|
58
|
+
* Django 3.2+
|
59
|
+
* Dramatiq 1.0+
|
60
|
+
* Falcon 2.0+
|
61
|
+
* Flask 0.10+
|
62
|
+
* Huey 2.0+
|
63
|
+
* Hug 2.5.1+
|
64
|
+
* RQ 1.0+
|
65
|
+
* Starlette 0.12+
|
66
|
+
|
67
|
+
For other frameworks, you can use the agent's instrumentation API.
|
68
|
+
|
69
|
+
To use Scout, you'll need to
|
70
|
+
[sign up for an account](https://scoutapm.com/users/sign_up) or use
|
71
|
+
[our Heroku Addon](https://devcenter.heroku.com/articles/scout).
|
72
|
+
|
73
|
+
## Documentation
|
74
|
+
|
75
|
+
For full installation instructions, including information on configuring Scout
|
76
|
+
via environment variables and troubleshooting, see our
|
77
|
+
[Python docs](https://scoutapm.com/docs/python).
|
78
|
+
|
79
|
+
## Support
|
80
|
+
|
81
|
+
Please email us at support@scoutapm.com or [create a GitHub
|
82
|
+
issue](https://github.com/scoutapp/scout_apm_python/issues/).
|
@@ -0,0 +1,65 @@
|
|
1
|
+
scout_apm-3.3.0.dist-info/entry_points.txt,sha256=eiVubJRHQCFcJ1fqH_2myVIOlt9xx32sKTRtWs9xWjk,82
|
2
|
+
scout_apm-3.3.0.dist-info/RECORD,,
|
3
|
+
scout_apm-3.3.0.dist-info/METADATA,sha256=biZi_IvzkhsIOTKKdyc5wXQVuN0yWGQPTjSHjvZzztI,3133
|
4
|
+
scout_apm-3.3.0.dist-info/WHEEL,sha256=8mXPuDV2qXc-RHUE1QhrdRfnaZNRa8DXsrwOEvbOqtY,108
|
5
|
+
scout_apm-3.3.0.dist-info/top_level.txt,sha256=tXGCTyC-E-TraDQng0CvkawiUZU-h4kkhe-5avNfnTw,10
|
6
|
+
scout_apm-3.3.0.dist-info/LICENSE,sha256=IL2YQsmIcNnRK09t7_ELMSBMdyrMWIJpBOCAhZ9IMCU,1084
|
7
|
+
scout_apm/rq.py,sha256=afjakKsiNLXgwPMrBB-o8brMPptEuaIfQZ5Cu70ak1w,2249
|
8
|
+
scout_apm/compat.py,sha256=kTG20OAM8SkbVQZS_-bd_bn4F0BjpsfGoxfCk7kyYCI,2496
|
9
|
+
scout_apm/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
10
|
+
scout_apm/sqlalchemy.py,sha256=MKhRJwiJvJDRR4hQA2W8FG2YMueDFXNOmXbP9sQGVqM,1358
|
11
|
+
scout_apm/celery.py,sha256=zzM5wn9ScaFk-7YizntSOG8I2WEzEc-crSYZ7_AJjxA,4729
|
12
|
+
scout_apm/hug.py,sha256=tSo8r6oFNFoqF3T7lVXi1CxmrRkOX8DiDJrks58dHyw,1387
|
13
|
+
scout_apm/falcon.py,sha256=5Ll4RQRz8v_nB_A3cx65I1UQ2hxgWaU1uCsAtkbg4F0,5357
|
14
|
+
scout_apm/dramatiq.py,sha256=N0VxvprOeXSAmmvE7nmZ5ul1rMuJQC-eEzerwGTC7yc,1424
|
15
|
+
scout_apm/bottle.py,sha256=jWBUXgW4-sOiUbr9HYimO5Ryd9dvNVZa5Rb611jxxNI,2934
|
16
|
+
scout_apm/huey.py,sha256=XjQNVfO8Z14iu1t9qqv-ZRn_3HqfuQv5t1ZYhlRZ17Y,1752
|
17
|
+
scout_apm/async_/starlette.py,sha256=aFnc1XTXC4ug9llYX9dDeiElXQIb6QgA8gq3N_g9-Ew,3812
|
18
|
+
scout_apm/async_/__init__.py,sha256=eoZ6GfifbqhMLNzjlqRDVil-yyBkOmVN9ujSgJWNBlY,15
|
19
|
+
scout_apm/async_/api.py,sha256=K8Sh5IiVO-PnJNRzErAQulNxuFcQoMR8-a2-P0IMAZo,1116
|
20
|
+
scout_apm/async_/instruments/jinja2.py,sha256=pYrLigxeSgEAWmzWxqh5zCa86TkZQ9A1S7W8uTXE3C8,374
|
21
|
+
scout_apm/async_/instruments/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
22
|
+
scout_apm/api/__init__.py,sha256=dx6qEJ-xMsWc4E4bvgoxSo5k7vrCELLApJvOoyLWSpA,5660
|
23
|
+
scout_apm/django/middleware.py,sha256=fE-bon42PigKZ5SXVxDBHOyPwBmWzZNmzqILKZqM72I,7761
|
24
|
+
scout_apm/django/apps.py,sha256=aUQlZG8qQFCi0-vFeU0fmnpI60n3nvpXRWBAjdgG5GA,5260
|
25
|
+
scout_apm/django/__init__.py,sha256=RQdhc6VLBlJsiWLVb8yggtaY2pMla1j6YP4yrKPAYgk,207
|
26
|
+
scout_apm/django/request.py,sha256=bswpkpJIKO5oFm3OiBRwgXhtZFKx6pbgzGNCLrF8qz0,4853
|
27
|
+
scout_apm/django/instruments/template.py,sha256=zr_xlfgEbHoIItAFLbMEc0I4jj4sU8BW5IXMPNMqOI0,963
|
28
|
+
scout_apm/django/instruments/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
29
|
+
scout_apm/django/instruments/sql.py,sha256=8_n7oUHtrAc7miWrk_k8CLhc9KzS6W0iUbmZJFN-S6g,4227
|
30
|
+
scout_apm/django/instruments/huey.py,sha256=tRvBg5wr76W_aGpLfVpaDnLcTpR8jdhGMFOz3Xl580s,653
|
31
|
+
scout_apm/flask/__init__.py,sha256=Rt5D7c_NifqIG4cGGh7oo4XmekXacUlZda1WidECodU,4306
|
32
|
+
scout_apm/flask/sqlalchemy.py,sha256=HwoYvN0c4LZ9_spCkvVE8gcBJyHFRJCgndFVFKwCzao,757
|
33
|
+
scout_apm/core/error.py,sha256=EQ1e1wV9K2vkHXXRzoZxIPW89CF-ce7c8wYTI2b3ajM,3237
|
34
|
+
scout_apm/core/tracked_request.py,sha256=zCtv5hWoZ-Cy3yPM0UUaFQkVEyPHTt_BfLXC4FzBv7s,10394
|
35
|
+
scout_apm/core/n_plus_one_tracker.py,sha256=hE3YEVEe45Oygq8lR_6ftPRdCab6WYjnN8HeY8wLPL8,978
|
36
|
+
scout_apm/core/context.py,sha256=9qpFGKAGIqyer1NqAhBmU8DuVTf-4_doUFSC55vfDm4,4220
|
37
|
+
scout_apm/core/queue_time.py,sha256=KA1tsQ8K4kNYSXTfWS-RulTQ41Bhs2-HmqJwIkVxgcc,3199
|
38
|
+
scout_apm/core/_objtrace.cpython-38-i386-linux-gnu.so,sha256=S7-MCtCp9eYgMDUZmOiV5epN5Z_IMqnbB9CZx9kO0PY,27692
|
39
|
+
scout_apm/core/objtrace.py,sha256=F7L0V2QBzXYUEFfqon3adXkrA9UQJgmWCFprJo-l01I,463
|
40
|
+
scout_apm/core/threading.py,sha256=i_e3Zbqcq-yIDkipcTKCGJwmqGzpiYffl6IK88ylC-g,1624
|
41
|
+
scout_apm/core/backtrace.py,sha256=x2owyERxWdomJBz4leN3wHsf_P393864UUXW4uFrQtc,3495
|
42
|
+
scout_apm/core/__init__.py,sha256=SnXENrNGgE8_ontzysrZdrARLTsBDz7hXD50zludFbM,2944
|
43
|
+
scout_apm/core/error_service.py,sha256=QKyFGgjc_Ihm8ONv7j0hkPgtBu30U3poyfAD40BJ7jQ,5359
|
44
|
+
scout_apm/core/sampler.py,sha256=NZKX2RAnvOfsHY6EN47qaRmKOCoL04slNG1k91n8n_I,5105
|
45
|
+
scout_apm/core/platform_detection.py,sha256=gWgZNfcnjy97HzDTz-Q2F6xzrch7eVQtTGp2KqcdMEk,1777
|
46
|
+
scout_apm/core/web_requests.py,sha256=DD6xDdDZOfxCmpOTvXEJY3JLQ0n4Zw9SmlSfnN4xC3w,5680
|
47
|
+
scout_apm/core/stacktracer.py,sha256=loNFpOwFtTvf6XsCxari4iFJ8Pe4rZrLmoU691ZuV1M,900
|
48
|
+
scout_apm/core/metadata.py,sha256=huqY2c5vPrQSMZykxQzrSyYYiw8s9E_OIm_ABW9ZzzM,2284
|
49
|
+
scout_apm/core/config.py,sha256=TuKWfz3T1rYhRLyJm9ewVBZcRlz3YjkFRBX1YJlVHg8,11868
|
50
|
+
scout_apm/core/samplers/cpu.py,sha256=X0bpFks18cR61pbf69ptyKE0CtnUmBJUJXSRQ_S2IdM,2522
|
51
|
+
scout_apm/core/samplers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
52
|
+
scout_apm/core/samplers/memory.py,sha256=D1py5gmf5GISq6_5HNnwI3HU2EunXaQ2HzqVKRwp5no,444
|
53
|
+
scout_apm/core/samplers/thread.py,sha256=P0s7T99EpYbbkekZnlCJQ787G8g1NnNbZjn8CLtDdUg,1342
|
54
|
+
scout_apm/core/cli/core_agent_manager.py,sha256=iOZhpXCnKZriJznCc2LD7eDXKqmc98zsYtDIrj3tXlU,813
|
55
|
+
scout_apm/core/cli/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
56
|
+
scout_apm/core/agent/commands.py,sha256=Ze4CKBHstpSk5OOzr1sNT84XFY2U9hLUGqfpDBSqhtY,7147
|
57
|
+
scout_apm/core/agent/manager.py,sha256=Vm6JfjRJW9YGQabWeZ5VXuWC7g8P_qBok1NjP6Oqoh4,10385
|
58
|
+
scout_apm/core/agent/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
59
|
+
scout_apm/core/agent/socket.py,sha256=GR0tfElZNxiCRCwtvHiqLU_37GIcz_ABQ3B7Jh-XeP8,6777
|
60
|
+
scout_apm/instruments/elasticsearch.py,sha256=xkkV1wHCd6clAFX7sMMrU75mfxXkKwN0i43aWPZg3is,8272
|
61
|
+
scout_apm/instruments/jinja2.py,sha256=a2-u9klcZQdkCJaylc55a4KGi3tHaNlbMXQr1PW3zI0,3662
|
62
|
+
scout_apm/instruments/redis.py,sha256=nrkt35bNI172yDzHmpcXFc972QDxLdOkdvh2gWkcz08,2190
|
63
|
+
scout_apm/instruments/pymongo.py,sha256=wVqA59ciH6LvOH3VRmMZG067U6qypoA6QzLtWp0IdAM,2538
|
64
|
+
scout_apm/instruments/__init__.py,sha256=X76KWdu2jgDdeJtg5DOC6rYPaq0ZXkhjiftxcsem3hI,631
|
65
|
+
scout_apm/instruments/urllib3.py,sha256=riwzKX-sgj9kCbN8E5gvtBlyWPAae8bMvi-JgMuGO_w,2219
|
@@ -0,0 +1 @@
|
|
1
|
+
scout_apm
|