国外购物网站赏析,深圳开发公司,滨湖区知名做网站选哪家,营销型网站服务编程目标
通过使用Flask和Celery#xff0c;实现一个简单的Web应用程序#xff0c;能够接收HTTP POST请求#xff0c;并异步发送电子邮件。
说明
使用Flask创建一个简单的Web应用程序#xff0c;包含一个HTTP POST路由#xff0c;用于接收发送电子邮件的请求。使用Cele…编程目标
通过使用Flask和Celery实现一个简单的Web应用程序能够接收HTTP POST请求并异步发送电子邮件。
说明
使用Flask创建一个简单的Web应用程序包含一个HTTP POST路由用于接收发送电子邮件的请求。使用Celery实现一个异步任务用于发送电子邮件。发送电子邮件的请求应包含以下信息 收件人地址邮件主题邮件内容 邮件发送成功后返回响应表示成功发送。
技术栈
PythonFlaskCeleryRedis
接口设计
1. 发送邮件接口
URL: /send-email方法: POST请求参数: recipient (string): 收件人地址subject (string): 邮件主题body (string): 邮件内容 成功响应: 状态码: 202 Accepted响应体: {“message”: “邮件发送任务已启动”}
app.py代码
from flask import Flask, request, jsonify
from tasks import send_email_asyncapp Flask(__name__)
app.json.ensure_ascii False # 解决中文乱码问题
app.route(/send-email, methods[POST])
def email_sender():post_form_data request.jsonprint(post_form_data)# 调用异步发送邮件任务email_data {sender_email: csdn_代码写注释163.com,sender_password: csdn_代码写注释,recipient: post_form_data[recipient],subject: post_form_data[subject],body: post_form_data[body]}send_email_async.delay(email_data)return jsonify({message: 邮件发送任务已启动}), 202if __name__ __main__:app.run(debugTrue, host0.0.0.0, port5000)tasks.py代码
from celery import Celery
import smtplib
from email.mime.text import MIMEText
from email.header import Headerapp Celery(tasks, brokerredis://localhost:6379/0, backendredis://localhost:6379/0)app.task
def send_email_async(email_data):content email_data.get(body)msg_from email_data.get(sender_email)password email_data.get(sender_password)msg_to email_data.get(recipient)subject email_data.get(subject)msg MIMEText(content)msg[Subject] subjectmsg[From] msg_frommsg[To] msg_totry:s smtplib.SMTP_SSL(smtp.163.com, 465)s.login(msg_from, password)s.sendmail(msg_from, msg_to, msg.as_string())s.quit()print(邮件发送成功!)return 邮件发送成功!except Exception as e:print(f邮件发送失败: {e})return 邮件发送失败test_send_email.py
import requestssubject 药价监督流水报告 # 主题
content
尊敬的xxx客户随函附上本季度药价监督的流水报告。以下是本季度药价监管的关键要点1. 监督范围全国23个省市的主要药品批发市场及在线药品交易平台。
2. 检查次数共计1,536次现场检查和3,245次在线监控。
3. 发现问题在检查中发现15起价格违规行为涉及7种药品。
4. 违规处理所有违规行为均已记录在案并对相关企业进行了警告及罚款处理。
5. 价格波动本季度药品平均价格波动率为3.5%与上季度相比下降了1.2个百分点。2024年05月09日def send_email():url http://localhost:5000/send-email # Flask 应用的 URLdata {recipient: csdn_代码写注释qq.com, # 收件人地址subject: subject, # 邮件主题body: content # 邮件内容}# 发送 POST 请求response requests.post(url, jsondata)# 输出响应内容print(响应状态码是:, response.status_code)print(响应内容是, response.text)send_email()实现效果 requirements.txt:
amqp5.2.0
async-timeout4.0.3
billiard4.2.0
blinker1.8.2
celery5.4.0
certifi2024.2.2
charset-normalizer3.3.2
click8.1.7
click-didyoumean0.3.1
click-plugins1.1.1
click-repl0.3.0
colorama0.4.6
dnspython2.6.1
eventlet0.36.1
Flask3.0.3
Flask-Mail0.9.1
greenlet3.0.3
idna3.7
itsdangerous2.2.0
Jinja23.1.4
kombu5.3.7
MarkupSafe2.1.5
prompt-toolkit3.0.43
python-dateutil2.9.0.post0
redis5.0.4
requests2.31.0
six1.16.0
tzdata2024.1
urllib32.2.1
vine5.1.0
wcwidth0.2.13
Werkzeug3.0.3
如何启动程序
# step:0
新建虚拟环境
# step:1
pip install -r requirements.txt
# step:2
启动Redis服务
# 见第一张图片分别打开三个窗口
窗口1app
在这个窗口里运行命令
python app.py窗口2tests
在这个窗口里运行命令
python test_send_email.py窗口3Celery
在这个窗口里运行命令
celery -A tasks worker --poolsolo --loglevelinfo然后你把代码里的发送方邮箱、发送方密码注意是授权码、接收方邮箱这三个配置参数改成真实的即可运行本程序实现Celery完成异步发送邮件了。
愿你的努力被世界看到。