def send_catch_log_deferred(signal=Any, sender=Anonymous, *arguments, **named):
 def logerror(failure, recv):
  if ((dont_log is None) or (not isinstance(failure.value, dont_log))):
   logger.error('Error caught on signal handler: %(receiver)s', {'receiver': recv}, exc_info=failure_to_exc_info(failure), extra={'spider': spider})
  return failure
 dont_log = named.pop('dont_log', None)
 spider = named.get('spider', None)
 dfds = []
 for receiver in liveReceivers(getAllReceivers(sender, signal)):
  d = maybeDeferred(robustApply, receiver, signal=signal, sender=sender, *arguments, **named)
  d.addErrback(logerror, receiver)
  d.addBoth((lambda result: (receiver, result)))
  dfds.append(d)
 d = DeferredList(dfds)
 d.addCallback((lambda out: [x[1] for x in out]))
 return d

def send_catch_log_deferred ( signal = Any , sender = Anonymous , * arguments , ** named ) : def logerror ( failure , recv ) : if ( ( dont_log is None ) or ( not isinstance ( failure . value , dont_log ) ) ) : logger . error ( 'Error caught on signal handler: %(receiver)s' , { 'receiver' : recv } , exc_info = failure_to_exc_info ( failure ) , extra = { 'spider' : spider } ) return failure dont_log = named . pop ( 'dont_log' , None ) spider = named . get ( 'spider' , None ) dfds = [ ] for receiver in liveReceivers ( getAllReceivers ( sender , signal ) ) : d = maybeDeferred ( robustApply , receiver , signal = signal , sender = sender , * arguments , ** named ) d . addErrback ( logerror , receiver ) d . addBoth ( ( lambda result : ( receiver , result ) ) ) dfds . append ( d ) d = DeferredList ( dfds ) d . addCallback ( ( lambda out : [ x [ 1 ] for x in out ] ) ) return d
like send_catch_log but supports returning deferreds on signal handlers .