aboutsummaryrefslogtreecommitdiff
path: root/jb/decorators.py
blob: cbc28b5f02626f742825ce844421817195bc4acf (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
import boto3
from botocore.config import Config
from generalresearchutils.pg_helper import PostgresConfig
from generalresearchutils.redis_helper import RedisConfig
from influxdb import InfluxDBClient
from mypy_boto3_mturk import MTurkClient
from mypy_boto3_sns import SNSClient

from jb.config import settings
from jb.managers import Permission
from jb.managers.assignment import AssignmentManager
from jb.managers.bonus import BonusManager
from jb.managers.hit import HitTypeManager, HitManager, HitQuestionManager

redis_config = RedisConfig(
    dsn=settings.redis,
    decode_responses=True,
    socket_timeout=settings.redis_timeout,
    socket_connect_timeout=settings.redis_timeout,
)
REDIS = redis_config.create_redis_client()

CLIENT_CONFIG = Config(
    # connect_timeout (float or int) – The time in seconds till a timeout
    # exception is thrown when attempting to make a connection. The default
    # is 60 seconds.
    connect_timeout=1,
    # read_timeout (float or int) – The time in seconds till a timeout
    # exception is thrown when attempting to read from a connection. The
    # default is 60 seconds.
    read_timeout=2.5,
)

# We shouldn't use this directly. Use our AMTManager wrapper
AMT_CLIENT: MTurkClient = boto3.client(
    service_name="mturk",
    region_name="us-east-1",
    endpoint_url=str(settings.amt_endpoint),
    aws_access_key_id=settings.amt_access_id,
    aws_secret_access_key=settings.amt_secret_key,
    config=CLIENT_CONFIG,
)

SNS_CLIENT: SNSClient = boto3.client(
    service_name="sns",
    region_name="us-east-2",
    aws_access_key_id=settings.amt_access_id,
    aws_secret_access_key=settings.amt_secret_key,
    config=CLIENT_CONFIG,
)

pg_config = PostgresConfig(
    dsn=settings.amt_jb_db,
    connect_timeout=1,
    statement_timeout=1,
)

HTM = HitTypeManager(
    pg_config=pg_config, permissions=[Permission.READ, Permission.CREATE]
)
HM = HitManager(pg_config=pg_config, permissions=[Permission.READ, Permission.CREATE])
HQM = HitQuestionManager(
    pg_config=pg_config, permissions=[Permission.READ, Permission.CREATE]
)
AM = AssignmentManager(
    pg_config=pg_config, permissions=[Permission.READ, Permission.CREATE]
)

BM = BonusManager(pg_config=pg_config, permissions=[Permission.READ, Permission.CREATE])

influx_client = None
if settings.influx_db:
    influx_client = InfluxDBClient.from_dsn(str(settings.influx_db))