From d5183123fae40eca70c3a09caf1ee5f3992b5758 Mon Sep 17 00:00:00 2001
From: Jack Robison <jackrobison@lbry.io>
Date: Fri, 28 Jun 2019 13:47:02 -0400
Subject: [PATCH] fix uvloop being ignored

---
 torba/torba/server/env.py | 20 ++++++++++++--------
 1 file changed, 12 insertions(+), 8 deletions(-)

diff --git a/torba/torba/server/env.py b/torba/torba/server/env.py
index 9095d4b59..1cf863b5b 100644
--- a/torba/torba/server/env.py
+++ b/torba/torba/server/env.py
@@ -33,7 +33,7 @@ class Env:
         self.allow_root = self.boolean('ALLOW_ROOT', False)
         self.host = self.default('HOST', 'localhost')
         self.rpc_host = self.default('RPC_HOST', 'localhost')
-        self.loop_policy = self.event_loop_policy()
+        self.loop_policy = self.set_event_loop_policy()
         self.obsolete(['UTXO_MB', 'HIST_MB', 'NETWORK'])
         self.db_dir = self.required('DB_DIRECTORY')
         self.db_engine = self.default('DB_ENGINE', 'leveldb')
@@ -129,14 +129,18 @@ class Env:
             raise cls.Error('remove obsolete environment variables {}'
                             .format(bad))
 
-    def event_loop_policy(self):
-        policy = self.default('EVENT_LOOP_POLICY', None)
-        if policy is None:
-            return None
-        if policy == 'uvloop':
+    def set_event_loop_policy(self):
+        policy_name = self.default('EVENT_LOOP_POLICY', None)
+        if not policy_name:
+            import asyncio
+            return asyncio.get_event_loop_policy()
+        elif policy_name == 'uvloop':
             import uvloop
-            return uvloop.EventLoopPolicy()
-        raise self.Error('unknown event loop policy "{}"'.format(policy))
+            import asyncio
+            loop_policy = uvloop.EventLoopPolicy()
+            asyncio.set_event_loop_policy(loop_policy)
+            return loop_policy
+        raise self.Error('unknown event loop policy "{}"'.format(policy_name))
 
     def cs_host(self, *, for_rpc):
         """Returns the 'host' argument to pass to asyncio's create_server