commit 39c82a7c88480f2da22a7b766c58998d112c08a4 Author: Damian Johnson atagar@torproject.org Date: Thu Aug 15 15:01:48 2019 -0700
Correct caching example
I whipped this up prior to writing the module. While developing it I paid special care to this use case so it's actually more elegant than the demo I anticipated. Running this example now works. --- stem/descriptor/collector.py | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-)
diff --git a/stem/descriptor/collector.py b/stem/descriptor/collector.py index e8e798b3..20eb6872 100644 --- a/stem/descriptor/collector.py +++ b/stem/descriptor/collector.py @@ -29,22 +29,23 @@ With this you can either download and read directly from CollecTor... ::
import datetime - import os import stem.descriptor import stem.descriptor.collector
yesterday = datetime.datetime.utcnow() - datetime.timedelta(days = 1) - path = os.path.expanduser('~/descriptor_cache/server_desc_today') + cache_dir = '~/descriptor_cache/server_desc_today'
- with open(path, 'wb') as cache_file: - for desc in stem.descriptor.collector.get_server_descriptors(start = yesterday): - cache_file.write(desc.get_bytes()) + collector = stem.descriptor.collector.CollecTor() + + for f in collector.files('server-descriptor', start = yesterday): + f.download(cache_dir)
# then later...
- for desc in stem.descriptor.parse_file(path, descriptor_type = 'server-descriptor 1.0'): - if desc.exit_policy.is_exiting_allowed(): - print(' %s (%s)' % (desc.nickname, desc.fingerprint)) + for f in collector.files('server-descriptor', start = yesterday): + for desc in f.read(cache_dir): + if desc.exit_policy.is_exiting_allowed(): + print(' %s (%s)' % (desc.nickname, desc.fingerprint))
::
@@ -355,6 +356,8 @@ class File(object): if self.compression != Compression.PLAINTEXT and decompress: filename = filename.rsplit('.', 1)[0]
+ directory = os.path.expanduser(directory) + path = os.path.join(directory, filename)
if not os.path.exists(directory):
tor-commits@lists.torproject.org