写了一个获取邮箱验证码的视图函数,因为邮箱发送是阻塞操作,我准备使用协程来完成这个操作,但是我都写好了后却出现了这个报错是怎么回事?
报错如下
很奇怪的就是,协程报错之后邮件是以同步形式发送的,相当于报错了也能发送邮件验证码。用的是flask
以下为代码
async def task_email(email2,verify_code):
task_list = []
message = Message(subject='验证码',recipients=[email2],body=verify_code,sender=('秋零','work1145141919@outlook.com'))
task = asyncio.create_task(mail.send(message))
task_list.append(task)
await asyncio.gather(*task_list)
# 验证码模块获取视图函数
@bp.post('/get_verifycode')
def get_verifycode():
data = request.get_json()
email1 = decrypt_AES(data['email'])
email2 = remove_padding(email1)
email_data = registe_email(email=email2)
if email_data.validate():
verify_code = secrets.token_urlsafe(4)
# print(verify_code)
# message = Message(subject='验证码',recipients=[email2],body=verify_code,sender=('秋零','work1145141919@outlook.com'))
# mail.send(message)
# asyncio.run(task_email(email2,verify_code))
loop = asyncio.new_event_loop()
loop.run_until_complete(task_email(email2,verify_code))
code_task = verify_codetable(code=verify_code)
db.session.add(code_task)
db.session.commit()
return jsonify({'code': 200, 'message': '验证码发送成功', 'data': 'null'})
else:
return jsonify({'code': 200, 'message': f'{email_data.errors}', 'data': 'null'})
不知道你这个问题是否已经解决, 如果还没有解决的话:正确时返回的JSON数据包如下:
{
"access_token":"ACCESS_TOKEN",
"expires_in":7200,
"refresh_token":"REFRESH_TOKEN",
"openid":"OPENID",
"scope":"SCOPE"
}