Flask -Почта не работает с eventlet.monkey_patch (all = True) - PullRequest
0 голосов
/ 25 апреля 2020

Я реализую отправителя электронной почты в моем flask проекте, который использует Flask -SocketIo Asynchronous with Eventlet, мой базовый c код выглядит так:


eventlet.monkey_patch(all=True)
app = Flask(__name__, template_folder="Templates")
socket: SocketIO = SocketIO(app, async_mode="eventlet", json=json)

@app.route('/')
def main():
    msg = Message(subject="Hello",
                  sender=('Muninn', '--------@gmail.com'),
                  recipients=["----------@hotmail.com"], 
                  body="Muninn system online")
    print(mail.send(msg))

    return 'Muninn Online'
if __name__ == '__main__':
    socket.run(app, host='0.0.0.0', port=80, debug=True)

Когда я получаю доступ localhost/ eventlet дает мне эту ошибку:

wrap_socket() got an unexpected keyword argument '_context'
Traceback (most recent call last):
  File "D:\Projetos\Hello\MuninnServer\venv\lib\site-packages\flask\app.py", line 1832, in full_dispatch_request
    rv = self.dispatch_request()
  File "D:\Projetos\Hello\MuninnServer\venv\lib\site-packages\flask\app.py", line 1818, in dispatch_request
    return self.view_functions[rule.endpoint](**req.view_args)
  File "D:\Projetos\Hello\MuninnServer\main.py", line 70, in main
    print(mail.send(msg))
  File "D:\Projetos\Hello\MuninnServer\venv\lib\site-packages\flask_mail.py", line 491, in send
    with self.connect() as connection:
  File "D:\Projetos\Hello\MuninnServer\venv\lib\site-packages\flask_mail.py", line 144, in __enter__
    self.host = self.configure_host()
  File "D:\Projetos\Hello\MuninnServer\venv\lib\site-packages\flask_mail.py", line 156, in configure_host
    host = smtplib.SMTP_SSL(self.mail.server, self.mail.port)
  File "C:\Users\caiof\AppData\Local\Programs\Python\Python38-32\lib\smtplib.py", line 1034, in __init__
    SMTP.__init__(self, host, port, local_hostname, timeout,
  File "C:\Users\caiof\AppData\Local\Programs\Python\Python38-32\lib\smtplib.py", line 253, in __init__
    (code, msg) = self.connect(host, port)
  File "C:\Users\caiof\AppData\Local\Programs\Python\Python38-32\lib\smtplib.py", line 339, in connect
    self.sock = self._get_socket(host, port, self.timeout)
  File "C:\Users\caiof\AppData\Local\Programs\Python\Python38-32\lib\smtplib.py", line 1042, in _get_socket
    new_socket = self.context.wrap_socket(new_socket,
  File "D:\Projetos\Hello\MuninnServer\venv\lib\site-packages\eventlet\green\ssl.py", line 438, in wrap_socket
    return GreenSSLSocket(sock, *a, _context=self, **kw)
  File "D:\Projetos\Hello\MuninnServer\venv\lib\site-packages\eventlet\green\ssl.py", line 67, in __new__
    ret = _original_wrap_socket(
TypeError: wrap_socket() got an unexpected keyword argument '_context'

wrap_socket() got an unexpected keyword argument '_context'

Когда я удаляю eventlet.monkey_patch(all=True), я могу отправить электронное письмо в обычном порядке

...