fix(backend): do not use thread when sending email. This may be slow,

but can be alleviated by async backends.
This commit is contained in:
zouxiaochuan 2024-01-30 14:36:23 +08:00
parent b0a7b32a8e
commit 1c16d767c3
1 changed files with 36 additions and 26 deletions

View File

@ -5,9 +5,10 @@ import lib.database_operations as dbops
import itsdangerous
import smtplib
import ssl
import multiprocessing as mp
import multiprocessing.dummy as mp
import socks
import socket
import context as backend_context
__all__ = ["get_parameters", "generate_random_str", "dump_learnware"]
@ -69,22 +70,25 @@ def send_email_worker(sender_email, password, receiver_email, message, smtp_serv
if len(smtp_server) == 0:
return
if len(proxy_host) > 0 and proxy_port > 0:
socks.setdefaultproxy(socks.PROXY_TYPE_SOCKS5, proxy_host, proxy_port)
original_socket = socket.socket
socket.socket = socks.socksocket
pass
try:
if len(proxy_host) > 0 and proxy_port > 0:
socks.setdefaultproxy(socks.PROXY_TYPE_SOCKS5, proxy_host, proxy_port)
original_socket = socket.socket
socket.socket = socks.socksocket
pass
context = ssl.create_default_context()
context = ssl.create_default_context()
with smtplib.SMTP_SSL(smtp_server, port, context=context) as server:
server.login(sender_email, password)
server.sendmail(sender_email, receiver_email, message)
pass
with smtplib.SMTP_SSL(smtp_server, port, context=context) as server:
server.login(sender_email, password)
server.sendmail(sender_email, receiver_email, message)
pass
if len(proxy_host) > 0 and proxy_port > 0:
socket.socket = original_socket
pass
if len(proxy_host) > 0 and proxy_port > 0:
socket.socket = original_socket
pass
except Exception as e:
backend_context.logger.exception(e)
pass
@ -110,12 +114,15 @@ Subject: Please activate your account\r\n\
Beimingwu Group
"""
thread = mp.Process(
target=send_email_worker,
args=(sender_email, password, receiver_email, message, smtp_server, port, proxy_host, proxy_port),
)
thread.start()
return thread
# thread = mp.Process(
# target=send_email_worker,
# args=(sender_email, password, receiver_email, message, smtp_server, port, proxy_host, proxy_port),
# )
# thread.start()
# return thread
send_email_worker(sender_email, password, receiver_email, message, smtp_server, port, proxy_host, proxy_port)
return None
def send_reset_password_email(email: str, verification_code: str, user_id: str, email_config: dict) -> bool:
@ -141,9 +148,12 @@ Subject: Reset your password\r\n\
Beimingwu Group
"""
thread = mp.Process(
target=send_email_worker,
args=(sender_email, password, receiver_email, message, smtp_server, port, proxy_host, proxy_port),
)
thread.start()
return thread
# thread = mp.Process(
# target=send_email_worker,
# args=(sender_email, password, receiver_email, message, smtp_server, port, proxy_host, proxy_port),
# )
# thread.start()
# return thread
send_email_worker(sender_email, password, receiver_email, message, smtp_server, port, proxy_host, proxy_port)
return None