pgtoolkit/tools/longqueries.py
author Radek Brich <brich.radek@ifortuna.cz>
Tue, 06 May 2014 18:37:43 +0200
changeset 101 2a2d0d5df03b
parent 93 longqueries.py@b72591087495
permissions -rw-r--r--
Refactor ToolBase to allow tool composition. Add TableSync tool (composited). Move more tools under pgtool.

from pgtoolkit.toolbase import SimpleTool
from pgtoolkit import pgstats
from pycolib.ansicolor import highlight, YELLOW, BOLD


class LongQueriesTool(SimpleTool):

    """
    List long running queries.
    """

    def __init__(self):
        SimpleTool.__init__(self, name='longqueries')

    def specify_args(self):
        SimpleTool.specify_args(self)
        self.parser.add_argument('--age', default='1m', help='How long must be the query running to be listed.')

    def main(self):
        stats = pgstats.PgStats(self.pgm.get_conn('target'))

        for ln in stats.list_long_queries(self.args.age):
            print(highlight(1),
                  'backend PID: ', ln['procpid'],
                  ', query_start: ', ln['query_start'].strftime('%F %T'),
                  ', client IP: ', ln['client_addr'],
                  ln['waiting'] and ', ' + highlight(1, YELLOW|BOLD) + 'waiting' or '',
                  highlight(0), sep='')
            print(ln['query'])
            print()


cls = LongQueriesTool