Skip to content

Instantly share code, notes, and snippets.

@klizhentas
Last active December 22, 2015 04:48
Show Gist options
  • Save klizhentas/6419458 to your computer and use it in GitHub Desktop.
Save klizhentas/6419458 to your computer and use it in GitHub Desktop.
Twisted MX
from operator import attrgetter, itemgetter
from itertools import groupby, chain
from random import shuffle
from twisted.names.client import Resolver
from twisted.internet import defer
from twisted.python import log
def init(config):
R.resolver = Resolver(resolv='/etc/resolv.conf')
@defer.inlineCallbacks
def resolve(esp):
answers = yield R.resolver.lookupMailExchange(esp)
groups = []
for preference, grouped in groupby(answers[0], attrgetter('payload.preference')):
group = [str(r.payload.name) for r in grouped]
shuffle(group)
groups.append((preference, group))
groups = sorted(groups, key=itemgetter(0))
log.msg("Sorted records %s" %(groups,))
groups = [group for preference, group in groups]
defer.returnValue(list(chain(*groups)))
class R(object):
resolver = None
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment