[tor-commits] [stem/master] Make `Controller.get_accounting_stats` asynchronous

atagar at torproject.org atagar at torproject.org
Thu Jul 16 01:28:58 UTC 2020


commit d2c65fe459457fc038ec8a1281816abbacb2be9d
Author: Illia Volochii <illia.volochii at gmail.com>
Date:   Wed Apr 15 22:05:32 2020 +0300

    Make `Controller.get_accounting_stats` asynchronous
---
 stem/control.py | 14 ++++++++------
 1 file changed, 8 insertions(+), 6 deletions(-)

diff --git a/stem/control.py b/stem/control.py
index c5cbbf81..d6034fff 100644
--- a/stem/control.py
+++ b/stem/control.py
@@ -1440,7 +1440,7 @@ class Controller(BaseController):
     return listeners
 
   @with_default()
-  def get_accounting_stats(self, default: Any = UNDEFINED) -> 'stem.control.AccountingStats':
+  async def get_accounting_stats(self, default: Any = UNDEFINED) -> 'stem.control.AccountingStats':
     """
     get_accounting_stats(default = UNDEFINED)
 
@@ -1457,14 +1457,16 @@ class Controller(BaseController):
       and no default was provided
     """
 
-    if self.get_info('accounting/enabled') != '1':
+    if await self.get_info('accounting/enabled') != '1':
       raise stem.ControllerError("Accounting isn't enabled")
 
     retrieved = time.time()
-    status = self.get_info('accounting/hibernating')
-    interval_end = self.get_info('accounting/interval-end')
-    used = self.get_info('accounting/bytes')
-    left = self.get_info('accounting/bytes-left')
+    status, interval_end, used, left = await asyncio.gather(
+      self.get_info('accounting/hibernating'),
+      self.get_info('accounting/interval-end'),
+      self.get_info('accounting/bytes'),
+      self.get_info('accounting/bytes-left'),
+    )
 
     interval_end = stem.util.str_tools._parse_timestamp(interval_end)
     used_read, used_written = [int(val) for val in used.split(' ', 1)]





More information about the tor-commits mailing list