From 84f775013fcbf79e6a31d29f1fb8cbd5351dedfa Mon Sep 17 00:00:00 2001 From: Joscha Date: Mon, 31 May 2021 11:41:20 +0200 Subject: [PATCH] Use event loop workaround only on windows This avoids an unnecessary one-second sleep on other platforms. However, a better "fix" for this sleep would be a less ugly workaround on windows. --- PFERD/__main__.py | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/PFERD/__main__.py b/PFERD/__main__.py index 26a1dc4..9d61264 100644 --- a/PFERD/__main__.py +++ b/PFERD/__main__.py @@ -1,6 +1,7 @@ import argparse import asyncio import configparser +import os import sys from pathlib import Path @@ -118,10 +119,18 @@ def main() -> None: sys.exit(1) try: - loop = asyncio.get_event_loop() - loop.run_until_complete(pferd.run(args.debug_transforms)) - loop.run_until_complete(asyncio.sleep(1)) - loop.close() + if os.name == "nt": + # A "workaround" for the windows event loop somehow crashing after + # asyncio.run() completes. See: + # https://bugs.python.org/issue39232 + # https://github.com/encode/httpx/issues/914#issuecomment-780023632 + # TODO Fix this properly + loop = asyncio.get_event_loop() + loop.run_until_complete(pferd.run(args.debug_transforms)) + loop.run_until_complete(asyncio.sleep(1)) + loop.close() + else: + asyncio.run(pferd.run(args.debug_transforms)) except ConfigOptionError as e: log.unlock() log.error(str(e))