from ccxt import ExchangeError, NotSupported, RequestTimeout, InvalidNonce
import ccxt_wrapper as ccxt
import time
-import psycopg2
-import redis
+import dbs
from store import *
from cachetools.func import ttl_cache
from datetime import datetime
self.balances = BalanceStore(self)
self.processor = Processor(self)
- for key in ["user_id", "market_id", "pg_config", "redis_config"]:
+ for key in ["user_id", "market_id"]:
setattr(self, key, kwargs.get(key, None))
self.report.log_market(self.args)
date = datetime.datetime.now()
if self.args.report_path is not None:
self.store_file_report(date)
- if self.pg_config is not None and self.args.report_db:
+ if dbs.psql_connected() and self.args.report_db:
self.store_database_report(date)
- if self.redis_config is not None and self.args.report_redis:
+ if dbs.redis_connected() and self.args.report_redis:
self.store_redis_report(date)
def store_file_report(self, date):
try:
report_query = 'INSERT INTO reports("date", "market_config_id", "debug") VALUES (%s, %s, %s) RETURNING id;'
line_query = 'INSERT INTO report_lines("date", "report_id", "type", "payload") VALUES (%s, %s, %s, %s);'
- connection = psycopg2.connect(**self.pg_config)
- cursor = connection.cursor()
+ cursor = dbs.psql.cursor()
cursor.execute(report_query, (date, self.market_id, self.debug))
report_id = cursor.fetchone()[0]
for date, type_, payload in self.report.to_json_array():
cursor.execute(line_query, (date, report_id, type_, payload))
- connection.commit()
+ dbs.psql.commit()
cursor.close()
- connection.close()
except Exception as e:
print("impossible to store report to database: {}; {}".format(e.__class__.__name__, e))
def store_redis_report(self, date):
try:
- conn = redis.Redis(**self.redis_config)
for type_, log in self.report.to_json_redis():
key = "/cryptoportfolio/{}/{}/{}".format(self.market_id, date.isoformat(), type_)
- conn.set(key, log, ex=31*24*60*60)
+ dbs.redis.set(key, log, ex=31*24*60*60)
key = "/cryptoportfolio/{}/latest/{}".format(self.market_id, type_)
- conn.set(key, log)
+ dbs.redis.set(key, log)
key = "/cryptoportfolio/{}/latest/date".format(self.market_id)
- conn.set(key, date.isoformat())
+ dbs.redis.set(key, date.isoformat())
except Exception as e:
print("impossible to store report to redis: {}; {}".format(e.__class__.__name__, e))