Files
2020-04-08 10:39:44 -07:00

79 lines
1.6 KiB
Python

"""
a script which uses our integratiosn and prints memory statistics.
a very coarsely grained way of seeing how things are used.
"""
# stdlib
import itertools
import logging
import time
import sys
# 3p
import pylibmc
import pympler.tracker
import psycopg2
import redis
# project
import ddtrace
from tests.contrib import config
# verbosity
logging.basicConfig(stream=sys.stderr, level=logging.INFO)
ddtrace.patch_all()
ddtrace.tracer.writer = None
class KitchenSink(object):
def __init__(self):
self._redis = redis.Redis(**config.REDIS_CONFIG)
self._pg = psycopg2.connect(**config.POSTGRES_CONFIG)
url = '%s:%s' % (
config.MEMCACHED_CONFIG['host'],
config.MEMCACHED_CONFIG['port'])
self._pylibmc = pylibmc.Client([url])
def ping(self, i):
self._ping_redis(i)
self._ping_pg(i)
self._ping_pylibmc(i)
def _ping_redis(self, i):
with self._redis.pipeline() as p:
p.get('a')
self._redis.set('a', 'b')
self._redis.get('a')
def _ping_pg(self, i):
cur = self._pg.cursor()
try:
cur.execute("select 'asdf'")
cur.fetchall()
finally:
cur.close()
def _ping_pylibmc(self, i):
self._pylibmc.set('a', 1)
self._pylibmc.incr('a', 2)
self._pylibmc.decr('a', 1)
if __name__ == '__main__':
k = KitchenSink()
t = pympler.tracker.SummaryTracker()
for i in itertools.count():
# do the work
k.ping(i)
# periodically print stats
if i % 500 == 0:
t.print_diff()
time.sleep(0.0001)