MCPcopy
hub / github.com/scrapy/scrapy / _send_catch_log_deferred

Function _send_catch_log_deferred

scrapy/utils/signal.py:98–138  ·  view source on GitHub ↗
(
    signal: TypingAny,
    sender: TypingAny,
    *arguments: TypingAny,
    **named: TypingAny,
)

Source from the content-addressed store, hash-verified

96
97@inlineCallbacks
98def _send_catch_log_deferred(
99 signal: TypingAny,
100 sender: TypingAny,
101 *arguments: TypingAny,
102 **named: TypingAny,
103) -> Generator[Deferred[TypingAny], TypingAny, list[tuple[TypingAny, TypingAny]]]:
104 def logerror(failure: Failure, recv: TypingAny) -> Failure:
105 if dont_log is None or not isinstance(failure.value, dont_log):
106 logger.error(
107 "Error caught on signal handler: %(receiver)s",
108 {"receiver": recv},
109 exc_info=failure_to_exc_info(failure),
110 extra={"spider": spider},
111 )
112 return failure
113
114 dont_log = named.pop("dont_log", None)
115 spider = named.get("spider")
116 dfds: list[Deferred[tuple[TypingAny, TypingAny]]] = []
117 for receiver in liveReceivers(getAllReceivers(sender, signal)):
118 d: Deferred[TypingAny] = _maybeDeferred_coro(
119 robustApply,
120 True,
121 receiver,
122 *arguments,
123 signal=signal,
124 sender=sender,
125 **named,
126 )
127 d.addErrback(logerror, receiver)
128 # TODO https://pylint.readthedocs.io/en/latest/user_guide/messages/warning/cell-var-from-loop.html
129 d2: Deferred[tuple[TypingAny, TypingAny]] = d.addBoth(
130 lambda result: (
131 receiver, # pylint: disable=cell-var-from-loop # noqa: B023
132 result,
133 )
134 )
135 dfds.append(d2)
136
137 results = yield DeferredList(dfds)
138 return [result[1] for result in results]
139
140
141async def send_catch_log_async(

Callers 2

send_catch_log_deferredFunction · 0.85
send_catch_log_asyncFunction · 0.85

Calls 3

_maybeDeferred_coroFunction · 0.90
popMethod · 0.45
getMethod · 0.45

Tested by

no test coverage detected