]> git.immae.eu Git - perso/Immae/Projets/Cryptomonnaies/Cryptoportfolio/Trader.git/blobdiff - main.py
Store some information to redis
[perso/Immae/Projets/Cryptomonnaies/Cryptoportfolio/Trader.git] / main.py
diff --git a/main.py b/main.py
index f465d8db0239022d620cb89cdf4948ee6c028b60..13c22409188a34bd10138b308d766287ada0671b 100644 (file)
--- a/main.py
+++ b/main.py
@@ -95,13 +95,25 @@ def parse_config(args):
     del(args.db_password)
     del(args.db_database)
 
+    redis_config = {
+            "host": args.redis_host,
+            "port": args.redis_port,
+            "db": args.redis_database,
+            }
+    if redis_config["host"].startswith("/"):
+        redis_config["unix_socket_path"] = redis_config.pop("host")
+        del(redis_config["port"])
+    del(args.redis_host)
+    del(args.redis_port)
+    del(args.redis_database)
+
     report_path = args.report_path
 
     if report_path is not None and not \
             os.path.exists(report_path):
         os.makedirs(report_path)
 
-    return pg_config
+    return pg_config, redis_config
 
 def parse_args(argv):
     parser = configargparse.ArgumentParser(
@@ -134,6 +146,10 @@ def parse_args(argv):
             help="Store report to database (default)")
     parser.add_argument("--no-report-db", action='store_false', dest="report_db",
             help="Don't store report to database")
+    parser.add_argument("--report-redis", action='store_true', default=False, dest="report_redis",
+            help="Store report to redis")
+    parser.add_argument("--no-report-redis", action='store_false', dest="report_redis",
+            help="Don't store report to redis (default)")
     parser.add_argument("--report-path", required=False,
             help="Where to store the reports (default: absent, don't store)")
     parser.add_argument("--no-report-path", action='store_const', dest='report_path', const=None,
@@ -148,17 +164,24 @@ def parse_args(argv):
             help="Password access to database (default: cryptoportfolio)")
     parser.add_argument("--db-database", default="cryptoportfolio",
             help="Database access to database (default: cryptoportfolio)")
+    parser.add_argument("--redis-host", default="localhost",
+            help="Host access to database (default: localhost). Use path for socket")
+    parser.add_argument("--redis-port", default=6379,
+            help="Port access to redis (default: 6379)")
+    parser.add_argument("--redis-database", default=0,
+            help="Redis database to use (default: 0)")
 
     parsed = parser.parse_args(argv)
     if parsed.action is None:
         parsed.action = ["sell_all"]
     return parsed
 
-def process(market_config, market_id, user_id, args, pg_config):
+def process(market_config, market_id, user_id, args, pg_config, redis_config):
     try:
         market.Market\
                 .from_config(market_config, args, market_id=market_id,
-                        pg_config=pg_config, user_id=user_id)\
+                        pg_config=pg_config, redis_config=redis_config,
+                        user_id=user_id)\
                 .process(args.action, before=args.before, after=args.after)
     except Exception as e:
         print("{}: {}".format(e.__class__.__name__, e))
@@ -166,7 +189,7 @@ def process(market_config, market_id, user_id, args, pg_config):
 def main(argv):
     args = parse_args(argv)
 
-    pg_config = parse_config(args)
+    pg_config, redis_config = parse_config(args)
 
     market.Portfolio.report.set_verbose(not args.quiet)
 
@@ -183,7 +206,7 @@ def main(argv):
         process_ = process
 
     for market_id, market_config, user_id in fetch_markets(pg_config, args.user):
-        process_(market_config, market_id, user_id, args, pg_config)
+        process_(market_config, market_id, user_id, args, pg_config, redis_config)
 
     if args.parallel:
         for thread in threads: