def pg_sleep(sleep_seconds): from correx.config import get_config logger = logging.getLogger(__name__) logger.info("will send pg_sleep(%r) to postgres", sleep_seconds) pg_conn = get_config().postgres.connect() with pg_conn.cursor() as cursor: cursor.execute("select * from pg_sleep(%(seconds)s)", dict(seconds=sleep_seconds)) logger.info("finished pg_sleep(%r)", sleep_seconds)
def execute(self, query, vars=None): from correx.config import get_config from correx.flask_lib import get_current_flask_request_id_or_none from correx.celery_app import get_current_celery_task_id_or_none metadata = dict( pg_conn_id=self.conn_correlation_id, cursor_id=self.correlation_id, client_pid=os.getpid(), os_user=getpass.getuser(), flask_req_id=get_current_flask_request_id_or_none(), celery_task_id=get_current_celery_task_id_or_none(), context_type=get_config().context_type ) # if query was 'select 1;', # final_query is '/* __META_START:{"x": "x-val"}:META_END__ */ select 1;' final_query = MetadataCodec.encode(query=query, metadata=metadata) return super(CorrelationIDCursor, self).execute(final_query, vars=vars)
def inspect_db(): logger = logging.getLogger(__name__) queries = get_config().postgres.inspect() return jsonify_with_request_id(queries=get_config().postgres.inspect())
import os import flask from flask import request from werkzeug.contrib.fixers import ProxyFix from correx.config import get_config from correx.flask_lib import CorrelatedRequest import logging get_config().setup_logging() app = flask.Flask('correx') app.wsgi_app = ProxyFix(app.wsgi_app) app.request_class = CorrelatedRequest def _get_sleep_seconds(): return int(request.args.get('seconds', 15)) def jsonify_with_request_id(**kwargs): from correx.flask_lib import get_current_flask_request_id_or_none return flask.jsonify( flask_request_id=get_current_flask_request_id_or_none(), **kwargs) @app.route('/api/v1/sleep-in-worker') def db_sleep_in_worker(): from correx.celery_app import pg_sleep_in_worker logger = logging.getLogger('%s.db_sleep_in_worker' % __name__) sleep_duration = _get_sleep_seconds() logger.info("triggering celery task to run pg_sleep(%r)", sleep_duration)
def setup_celery_logging(*args, **kwargs): from correx.config import get_config get_config().setup_logging()
def correx_config(self): from correx.config import get_config return get_config()