架好服务器後,要订阅服务,就是要在一个时间点去捞设定资料并产生PDF并寄送email,写一个档案去做这件事。
新增一个档案 crontabSendEmail.py,要让heroku的排程附加元件,用Heroku Scheduler,他可以设定时间执行动作。
因为会用到django orm ,所以要 django.setup(),call 天气API因为资料都一样,只有区不一样,就呼叫一次就好。
捞所有纪录去判断选了什麽区,产制PDF,夹带档案,寄送email。
crontabSendEmail.py
import os
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'pdfProject.settings')
import django
django.setup()
from django.core.mail import EmailMessage
from lib.pdfWeather import CrawlerWeatherAPI, PdfWeather
from pdfProject.settings import MEDIA_ROOT, EMAIL_HOST_USER
from main.models import WeatherSubscribe
if __name__ == '__main__':
crawlerWeatherAPI = CrawlerWeatherAPI()
dataDictListAll = crawlerWeatherAPI.getCrawlerData()
weatherSubscribes = WeatherSubscribe.objects.all()
for weatherSubscribe in weatherSubscribes:
locationNameList = weatherSubscribe.districts
dataDictList = []
for dataDict in dataDictListAll:
if dataDict['locationName'] in locationNameList:
dataDictList.append(dataDict)
fileName = os.path.join(MEDIA_ROOT, '未来乡镇天气预报.pdf')
pdfWeather = PdfWeather(dataDictList, fileName)
pdfWeather.export()
fromEmail = EMAIL_HOST_USER
toEmailList = [weatherSubscribe.email]
email = EmailMessage(
'未来乡镇天气预报',
'您好,附档是未来乡镇天气预报PDF,谢谢',
fromEmail,
toEmailList,
)
email.attach_file(fileName)
email.send()
程序写完,记得上传到heorku ,
去heroku 设定加上 add-on Heroku Scheduler ,选择免费方案
新增工作,让他每天晚上9点送隔天的天气预报。
可以在heorku跑执行指令确认有没有错。
$ heroku run python3 crontabSendEmail.py
这样就完成了。
结语:
总算结束了,这30天前半部介绍了ReportLab的各个元素用法,後半部应用天气api 的资料,制作 未来天气预报pdf,後来结合django 做查询功能,完成一个粗略的 报表订阅网页系统,未来可以根据需求加入其他资料,页面多通知讯息等等,都是可以再做的。
demo连结:https://demo-pdf-weather.herokuapp.com/
参考资料:
<<: [2020铁人赛Day28]糊里糊涂Python就上手-Pandas的观念与运用(上)
>>: I Want To Know React - Context 范例 & 使用技巧
Slider 滑块组件通常用来跳整音量,萤幕亮度的时候使用,这里值得变更不能以 const [sli...
声明一下 这边要声明一下,这一篇其实应该出现在 Day07 的内容之前才对,所以,如果真的有读者 f...
一日客语:中文:圆 客语: 眼ienˇ 学习内容 检查实例的建构器类型:instanceof、con...
Given a string s, find the length of the longest s...
Starts fast, stays fast Web App 的效能会直接影响使用者体验,也会影响...