X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=main.py;h=55981bf94d82c966aea93e3f89ea25a01cdb7c79;hb=07fa7a4bf8f7a6f799120fb9a5965a09bea6c38e;hp=dcbc2a34c197e6540d8420cfb219d8152bdfa8c6;hpb=1f117ac79e10c3c9728d3b267d134dec2a165603;p=perso%2FImmae%2FProjets%2FCryptomonnaies%2FCryptoportfolio%2FTrader.git diff --git a/main.py b/main.py index dcbc2a3..55981bf 100644 --- a/main.py +++ b/main.py @@ -63,7 +63,8 @@ def make_order(market, value, currency, action="acquire", def get_user_market(config_path, user_id, debug=False): pg_config, report_path = parse_config(config_path) market_config = list(fetch_markets(pg_config, str(user_id)))[0][0] - return market.Market.from_config(market_config, debug=debug) + args = type('Args', (object,), { "debug": debug, "quiet": False })() + return market.Market.from_config(market_config, args, user_id=user_id, report_path=report_path) def fetch_markets(pg_config, user): connection = psycopg2.connect(**pg_config) @@ -109,6 +110,9 @@ def parse_args(argv): parser.add_argument("--after", default=False, action='store_const', const=True, help="Run the steps after the cryptoportfolio update") + parser.add_argument("--quiet", + default=False, action='store_const', const=True, + help="Don't print messages") parser.add_argument("--debug", default=False, action='store_const', const=True, help="Run in debug mode") @@ -117,6 +121,8 @@ def parse_args(argv): parser.add_argument("--action", action='append', help="Do a different action than trading (add several times to chain)") + parser.add_argument("--parallel", action='store_true', default=True, dest="parallel") + parser.add_argument("--no-parallel", action='store_false', dest="parallel") args = parser.parse_args(argv) @@ -126,18 +132,28 @@ def parse_args(argv): return args +def process(market_config, user_id, report_path, args): + try: + market.Market\ + .from_config(market_config, args, user_id=user_id, report_path=report_path)\ + .process(args.action, before=args.before, after=args.after) + except Exception as e: + print("{}: {}".format(e.__class__.__name__, e)) + def main(argv): args = parse_args(argv) pg_config, report_path = parse_config(args.config) - for market_config, user_id in fetch_markets(pg_config, args.user): - try: - market.Market\ - .from_config(market_config, debug=args.debug, user_id=user_id, report_path=report_path)\ - .process(args.action, before=args.before, after=args.after) - except Exception as e: - print("{}: {}".format(e.__class__.__name__, e)) + if args.parallel: + import threading + market.Portfolio.start_worker() + + for market_config, user_id in fetch_markets(pg_config, args.user): + threading.Thread(target=process, args=[market_config, user_id, report_path, args]).start() + else: + for market_config, user_id in fetch_markets(pg_config, args.user): + process(market_config, user_id, report_path, args) if __name__ == '__main__': # pragma: no cover main(sys.argv[1:])