使用场景

很多时候需要定时执行一些重复性且没什么技术含量的任务,比如:

  • 定时提醒我该交社保,该还信用卡了。
  • 定时查看某只股票的价格。
  • 定时给员工发送通知邮件。

对于这种量小且个性化的需求,个人开发者可以选用heroku来作为免费云服务器,创建定时提醒服务。

事前准备

  • Heroku账号注册:
    • 由于是国外的服务器,屏蔽了QQ邮箱,最好使用Gmail。
    • 准备一张信用卡(虽然是免费服务,但使用时依然需要绑定信用卡)。
  • 绑定WxPusher
    • 一款提供个性化微信提醒的服务。使用时需要提前关注并绑定其微信号。
    • 重点是免费,不过发送的消息里面会有广告。
  • 安装Heroku CLI
    • 这是Heroku官方的命令行工具,通过Git来上传,管理代码。
    • 参考:使用教程

创建定时任务流程

在Heroku上创建新app

登录进入Heroku Dashboard,创建创建一个新的app。

image.png

填写自定义的项目名。要记住你填写的app-name,后续使用Git上传代码时会用到。
(服务器只能选择美国或欧洲,可能访问速度会比较慢)

image.png

添加插件Heroku Scheduler

进入新建的app,选择Resources选项卡。
image.png
Heroku Scheduler是一个官方提供的附加服务。可以定时执行自定义的job。
参考:使用教程

上传Python脚本

比如你已经事前写好了一个发送邮件的Python脚本,将其命名为sendEmail.py,放在根目录下。
可以用以下命令将其上传到Heroku服务器上。
参考:Heroku部署教程

  1. heroku login ##输入注册时的用户名和密码,登录Heroku。
  2. heroku git:remote -a app-name ##用Git远程连接Heroku仓库。
  3. git push heroku master ##用Git推送代码。

注意:
在推送代码过程中,可能会需要验证你的auth token。可以使用以下命令查看:

  1. heroku auth:token

参考:解决方案

创建定时任务

选择要重复执行的时间,注意默认时区为UTC,要将其转换成东八区的北京时间再设定。

image.png

填入下面要执行的命令,保存即可。

  1. python sendEmail.py

查看执行log

最后,可以用以下命令行来检查你的代码是否正常运行。

  1. heroku logs --tail --app app-name