Opened 8 months ago
Closed 8 months ago
#35364 closed Cleanup/optimization (fixed)
AdminEmailHandler wastes work when ADMINS isn’t set
Reported by: | Adam Johnson | Owned by: | Adam Johnson |
---|---|---|---|
Component: | Error reporting | Version: | dev |
Severity: | Normal | Keywords: | |
Cc: | Triage Stage: | Ready for checkin | |
Has patch: | yes | Needs documentation: | no |
Needs tests: | no | Patch needs improvement: | no |
Easy pickings: | no | UI/UX: | no |
Description
AdminEmailHandler.emit()
does a lot of work to assemble the message it passes to mail_admins
. If settings.ADMINS
is empty, mail_admins()
returns instantly, wasting all the message-creation work. It’s quite common to not configure ADMINS
, whether in lieu of more advanced tools like Sentry, or during tests.
In a quick benchmark on my M1 Mac Pro on Python 3.11, the overhead is ~2.5ms:
In [1]: import logging In [2]: logger = logging.getLogger('django') In [3]: %timeit logger.error("Yada") ... 2.78 ms ± 75.4 µs per loop (mean ± std. dev. of 7 runs, 100 loops each) In [4]: logger = logging.getLogger('example') In [5]: %timeit logger.error("Yada") ... 8.37 µs ± 38.9 ns per loop (mean ± std. dev. of 7 runs, 100,000 loops each)
This can be avoided by adding an initial check to AdminEmailHandler.emit()
.
Change History (6)
comment:1 by , 8 months ago
Owner: | set to |
---|---|
Status: | new → assigned |
comment:2 by , 8 months ago
Triage Stage: | Unreviewed → Accepted |
---|
comment:3 by , 8 months ago
Has patch: | set |
---|
Note:
See TracTickets
for help on using tickets.
Makes sense, thank you!