|
1
|
|
|
"""Store whole answers to a database, for profiling purposes.""" |
|
2
|
|
|
|
|
3
|
1 |
|
import json |
|
4
|
|
|
|
|
5
|
1 |
|
from sqlalchemy import create_engine |
|
6
|
|
|
from sqlalchemy import Table, Column |
|
7
|
|
|
from sqlalchemy import Boolean, Float, Integer, String, Text, DateTime |
|
8
|
|
|
from sqlalchemy import MetaData, ForeignKey |
|
9
|
|
|
|
|
10
|
|
|
metadata = MetaData() |
|
11
|
|
|
|
|
12
|
|
|
requests = Table('requests', metadata, |
|
13
|
|
|
Column('request_handling_start_time', Float), |
|
14
|
|
|
Column('request_handling_end_time', Float), |
|
15
|
|
|
Column('request_answers_json', Text), |
|
16
|
|
|
) |
|
17
|
|
|
|
|
18
|
|
|
def get_engine(uri): |
|
19
|
|
|
"""Asks SQLAlchemy to create an engine to connect to the URI and return it.""" |
|
20
|
|
|
engine = create_engine(uri) |
|
21
|
|
|
metadata.create_all(engine) |
|
22
|
|
|
return engine |
|
23
|
|
|
|
|
24
|
|
|
def log_answers(config, answers, start_time, end_time): |
|
25
|
|
|
url = config.verbose_log_url |
|
26
|
|
|
if not url: |
|
27
|
|
|
return |
|
28
|
|
|
conn = get_engine(url).connect() |
|
29
|
|
|
answers = json.dumps([x.as_dict() for x in answers]) |
|
30
|
|
|
ins = requests.insert().values( |
|
31
|
|
|
request_handling_start_time=start_time, |
|
32
|
|
|
request_handling_end_time=end_time, |
|
33
|
|
|
request_answers_json=answers) |
|
34
|
|
|
res = conn.execute(ins) |
|
35
|
|
|
|