Revert "use async in email handler"

This reverts commit 4d7cd09847.
This commit is contained in:
Son 2021-10-13 10:27:59 +02:00
parent 0ec4a3971c
commit 68cf54b2d9

View file

@ -31,7 +31,6 @@ It should contain the following info:
""" """
import argparse import argparse
import asyncio
import email import email
import os import os
import time import time
@ -1712,7 +1711,7 @@ def should_ignore(mail_from: str, rcpt_tos: List[str]) -> bool:
return False return False
async def handle(envelope: Envelope) -> str: def handle(envelope: Envelope) -> str:
"""Return SMTP status""" """Return SMTP status"""
# sanitize mail_from, rcpt_tos # sanitize mail_from, rcpt_tos
@ -1935,7 +1934,7 @@ async def handle(envelope: Envelope) -> str:
class MailHandler: class MailHandler:
async def handle_DATA(self, server, session, envelope: Envelope): async def handle_DATA(self, server, session, envelope: Envelope):
try: try:
ret = await self._handle(envelope) ret = self._handle(envelope)
return ret return ret
except Exception: except Exception:
LOG.e( LOG.e(
@ -1946,7 +1945,7 @@ class MailHandler:
return status.E404 return status.E404
@newrelic.agent.background_task(application=newrelic_app) @newrelic.agent.background_task(application=newrelic_app)
async def _handle(self, envelope: Envelope): def _handle(self, envelope: Envelope):
start = time.time() start = time.time()
# generate a different message_id to keep track of an email lifecycle # generate a different message_id to keep track of an email lifecycle
@ -1959,21 +1958,23 @@ class MailHandler:
envelope.rcpt_tos, envelope.rcpt_tos,
) )
ret = await handle(envelope) app = new_app()
elapsed = time.time() - start with app.app_context():
LOG.i( ret = handle(envelope)
"Finish mail from %s, rctp tos %s, takes %s seconds <<===", elapsed = time.time() - start
envelope.mail_from, LOG.i(
envelope.rcpt_tos, "Finish mail from %s, rctp tos %s, takes %s seconds <<===",
elapsed, envelope.mail_from,
) envelope.rcpt_tos,
newrelic.agent.record_custom_metric( elapsed,
"Custom/email_handler_time", elapsed, newrelic_app )
) newrelic.agent.record_custom_metric(
newrelic.agent.record_custom_metric( "Custom/email_handler_time", elapsed, newrelic_app
"Custom/number_incoming_email", 1, newrelic_app )
) newrelic.agent.record_custom_metric(
return ret "Custom/number_incoming_email", 1, newrelic_app
)
return ret
def main(port: int): def main(port: int):