首页 » 网站建设 » phpsendgridapi技巧_用SendGrid和Redis队列用Python调解国际空间站的电子邮件

phpsendgridapi技巧_用SendGrid和Redis队列用Python调解国际空间站的电子邮件

访客 2024-11-30 0

扫一扫用手机浏览

文章目录 [+]

让我们先容一下如何在Python中利用排定电子邮件的Redis行列步队 .

先决条件和依赖性

在连续提高之前,请确保有以下内容:

phpsendgridapi技巧_用SendGrid和Redis队列用Python调解国际空间站的电子邮件

Python 3安装在你的机器上免费的SendGrid帐户测试此项目的电子邮件地址

这是你可以遵照的指南如果您要利用Python进行更多的Web开拓,并且不熟习诸如虚拟环境之类的东西,则须要设置您的开拓环境。

phpsendgridapi技巧_用SendGrid和Redis队列用Python调解国际空间站的电子邮件
(图片来自网络侵删)

在编写代码之前,您须要安装一些依赖项:

这个SendGrid Python librarY用于发送电子邮件RQ调度器-构建在另一个工具之上的轻量级、优雅的办理方案,该工具具有较低的进入门槛,称为Redis行列步队。
要求-用于发出HTTP要求

请确保创建并激活虚拟环境,然后利用以下命令安装这些环境:

pip install sendgrid rq-scheduler==0.11.0 requests==2.26.0

RQ和RedisPython模块将作为依赖关系安装RQScheduler。
为了让RQ事情,您还须要安装Redis在你的机器上。
可以利用以下命令实行以下操作:wget :

wget https://download.redis.io/releases/redis-6.2.6.tar.gztar xzf redis-6.2.6.tar.gzcd redis-6.2.6make

利用命令在默认端口上的单独终端窗口中运行Redissrc/redis-server从安装它的目录。

进入国际空间站的位置

让我们首先编写代码,为给定的坐标集调用OpenNotificationAPI,并打印下一次ISS将沿着该纬度和经度翱翔的韶光。

创建一个名为iss.py(“国际空间站”模块)在您希望利用代码的目录中,并添加以下功能:

from datetime import datetimeimport pytzimport requestsISS_URL = 'http://api.open-notify.org/iss-pass.json'def get_next_pass(lat, lon): location = { 'lat': lat, 'lon': lon } response = requests.get(ISS_URL, params=location).json() if 'response' in response: next_pass = response['response'][0]['risetime'] next_pass_datetime = datetime.fromtimestamp(next_pass, tz=pytz.utc) print('Next pass for {}, {} is: {}' .format(lat, lon, next_pass_datetime)) return next_pass_datetime else: print('No ISS flyby can be determined for {}, {}'.format(lat, lon))

这个get_next_pass函数在此代码中将向具有给定纬度和经度的OpenNotificationAPI发出要求,检讨是否有有效的相应,然后将从API收到的韶光戳转换为PythondateTime工具,并打印下一个ISS将在空中翱翔的相应韶光。

要测试这段代码,请打开Pythonshell并运行以下两行。
在这个例子中,我们将利用旧金山的Twilio总部作为我们的测试位置(纬度:37.788052,经度:-122.391472):

from iss import get_next_passget_next_pass(37.788052, -122.391472)

你该当看到这样的东西:Next pass for 37.788052, -122.391472 is: 2021-12-09 23:58:11+00:00有一个得当的韶光戳。

现在我们可以连续编写代码发送电子邮件了。

注册sendGrid并创建一个API密钥

创建SendGrid帐户,您可以为本教程选择免费层。
一旦你有了账户,你就须要创建API密钥从这张截图中可以看到。
您可以将它命名为您想要的任何名称,但是一旦创建了它,请确保在连续之前保存它!

保存此API键的一个好方法是将其设置为可以从Python代码中访问的环境变量,以避免在代码中直接编写它。
设置SENDGRID_API_KEY环境变量是SendGrid帐户中的API密钥。
不过,在其他地方做条记也没什么坏处,由于你不能再看一遍了。
这是一个如果须要帮助设置环境变量,请供应有用的教程。

稍后我们将利用这个API密钥。

用Python发送电子邮件

现在您有了SendGrid帐户和API密钥,您可以更新iss.py若要包含发送电子邮件的代码:

from datetime import datetimeimport osimport pytzimport requestsfrom sendgrid import SendGridAPIClientfrom sendgrid.helpers.mail import MailISS_URL = 'http://api.open-notify.org/iss-pass.json'def send_email(from_email, to_email, body): message = Mail( from_email=from_email, to_emails=to_email, subject='International Space Station passing by!', html_content=body) sg = SendGridAPIClient(os.environ.get('SENDGRID_API_KEY')) response = sg.send(message) print(response.status_code, response.body, response.headers)def get_next_pass(lat, lon): location = { 'lat': lat, 'lon': lon } response = requests.get(ISS_URL, params=location).json() if 'response' in response: next_pass = response['response'][0]['risetime'] next_pass_datetime = datetime.fromtimestamp(next_pass, tz=pytz.utc) print('Next pass for {}, {} is: {}' .format(lat, lon, next_pass_datetime)) return next_pass_datetime else: print('No ISS flyby can be determined for {}, {}'.format(lat, lon))

请记住,在考试测验运行此代码之前,要确保设置了SendGridAPI密钥环境变量。

请把稳,在生产运用程序中,建议验证 发送者身份 通过完成 域认证 ...发件人身份代表您的“从”电子邮件地址-您的收件人视为您的电子邮件发件人的地址。
有关此问题的一步一步的教程,请查看:
如何为Twilio SendGrid设置域认证 .

如果要测试此代码,请打开Pythonshell并运行以下代码,更换to_email与您自己的电子邮件地址的辩论:

from iss import send_emailsend_email('from_email@example.com', 'your_email@example.com', 'Look up!')

您该当收到一封电子邮件,见告您在运行此代码后要查找。

用RQ调度器调度任务

现在我们有了一个为我们供应日期韶光的函数,还有一个发送电子邮件的函数,我们可以利用RQScheduler。
创建另一个名为schedule_notification.py,并向其添加以下代码:

from datetime import datetimefrom redis import Redisfrom rq_scheduler import Schedulerimport issscheduler = Scheduler(connection=Redis()) # Get a scheduler for the "default" queue# Change these latitude and longitude values for any location you want.next_pass = iss.get_next_pass(37.788052, -122.391472)if next_pass: scheduler.enqueue_at(next_pass, iss.send_email, 'from_email@example.com', 'your_email@example.com', 'Look up! The ISS is flying above you!')

这只是一个快速的脚本,调用您编写的其他功能,一个是理解国际空间站何时经由您的位置下,另一个将向您发送电子邮件。
在本例中,我利用了旧金山Twilio办公室的坐标,但您可以将纬度和经度变动为您所在的任何位置。

在能够运行此代码之前,必须确保在其他终端窗口或后台进程中运行Redis做事器、RQ事情者和RQ Scheduler进程。
您该当已经通过利用命令运行Redis做事器了。
src/redis-server从安装Redis的目录。
再打开两个终端窗口,在这两个窗口中导航到代码所在的目录,并激活该项目的虚拟环境。
在一个窗口中运行命令rqworker在另一个命令中运行命令rqscheduler .

这样做之后,您该当准备好运行代码来调度关照:

python schedule_notification.py

现在你要做的便是等..。

穿越韶光

这很好,但是如果您不想等着看您的代码是否事情,这是可以理解的。
如果你想即时知足,我们可以利用韶光旅行的方法。
在基于unix的系统上,可以利用日期命令。

如果空间站预定在2019年12月5日4:02飞过,那么你可以在linux上运行。
date -s "12/05/2019 03:02:00"。
在OSX上你会运行date 1205160219(您乃至可以利用-u参数如果要利用UTC时区,该时区对应于Python代码正在打印的日期韶光)。
如果所有这些都失落败了,也有GUI选项来改变您的打算机在大多数操作系统上的韶光。

在OSX上,您可以通过在系统首选项中打开“日期和韶光”来设置(并重置)此选项。

如果您希望在ISS每次经由时而不是仅收到一次关照,则可以在每条之后安排另一次关照,方法是修正send_email在iss.py并添加适当的导入语句:

from redis import Redisfrom rq_scheduler import Schedulerscheduler = Scheduler(connection=Redis()) # Get a scheduler for the "default" queuedef send_email(from_email, to_email, body): message = Mail( from_email=from_email, to_emails=to_email, subject='International Space Station passing by!', html_content=body) sg = SendGridAPIClient(os.environ.get('SENDGRID_API_KEY')) response = sg.send(message) print(response.status_code, response.body, response.headers) scheduler.enqueue_at(next_pass, iss.send_email, 'from_email@example.com', 'your_email@example.com', 'Look up! The ISS is flying above you!')无限与超越

现在您可以在国际空间站经由时吸收电子邮件,您可以利用RQ Scheduler来知足所有Python调度需求。
可能性是无限的。

原文 Https://www.twilio.com/blog/scheduling-international-space-station-emails-in-python-with-sendgrid-and-redis-queue

标签:

相关文章

介绍皮肤设置,如何打造理想肌肤状态

随着科技的发展和人们对美的追求,皮肤设置已成为美容护肤的重要一环。如何根据皮肤类型、肤质、年龄等因素进行合理设置,已成为众多爱美人...

网站建设 2025-01-03 阅读1 评论0

介绍盖章制作,传承文化,彰显权威

自古以来,盖章在我国文化中具有重要的地位。从古代的官印、私印到现代的公章、合同章,盖章已成为一种独特的文化符号,承载着丰富的历史内...

网站建设 2025-01-03 阅读1 评论0

介绍监控破坏,技术手段与法律风险并存

随着科技的飞速发展,监控设备已遍布大街小巷,成为维护社会治安的重要手段。一些不法分子为了逃避法律制裁,开始研究如何破坏监控设备。本...

网站建设 2025-01-03 阅读1 评论0

介绍登录不上之谜,技术故障还是人为疏忽

随着互联网的普及,登录已成为人们日常生活中不可或缺的一部分。在享受便捷的登录不上这一问题也困扰着许多用户。本文将深入剖析登录不上之...

网站建设 2025-01-03 阅读1 评论0

介绍电脑键盘调出方法,让操作更高效

随着科技的发展,电脑已经成为了我们日常生活中不可或缺的工具。而电脑键盘,作为电脑输入设备,更是我们与电脑进行交流的桥梁。你是否知道...

网站建设 2025-01-03 阅读1 评论0

介绍磁力链,高效便捷的文件下载利器

在互联网高速发展的今天,文件下载已成为日常生活中不可或缺的一部分。而磁力链作为一种新型的文件下载方式,凭借其高效、便捷的特点,受到...

网站建设 2025-01-03 阅读1 评论0