not all get_consensus() relays are in get_server_descriptors()
The reverse is to expected and it's often up to 1000 relays. However, the mismatch in this case is often anywhere from 1 to 100 relays.
How to replicate:
Code highlighting:
{{{#!python
serverdescriptors_dict = dict((str(x.fingerprint), x) for x in DescriptorDownloader().get_server_descriptors().run())
consensus_list = [x for x in DescriptorDownloader().get_consensus().run()]
mismatch_count = len([x.fingerprint for x in consensus_list if x.fingerprint not in serverdescriptors_dict])
}}}
Here are the results from multiple runs:
88 16 91 1 1 86 1 88 90 90 17
Unclear where this bug is, it could be in the TOR protocol itself perhaps.