基于Python的阿里云API签名算法及邮件推送服务

签名算法

阿里云有提供SDK,但是签名算法目前只有JAVA、PHP、C#支持,其他需要自己写。在查了一些资料后, 基于python2.6/7 的Aliyun(阿里云) API的简单使用,最终实现了邮件推送。

先看一下这个核心类:

然后,我们写一个send_email的方法来调用:

这里使用了requests来get请求。

注意

代码写到这里,在本机环境测试都OK的,然后就往Celery上集成。这里要说明一下,因为之前是用SMTP来发邮件,平均发一封2秒左右吧,这样同步发的话是一件很恐怖的事情,所以就丢给Celery异步去执行任务了。现在集成了阿里的云邮件服务后,其实是可以同步发了,因为本身一个API请求也很快,但Celery闲着也是闲着,为什么不用起来呢,所以后面问题就来了。

就是第一段签名代码里写道的,原文中使用的是res = urllib.quote(encodeStr.decode(sys.stdin.encoding).encode('utf8'), ''),这样普通执行任务可以,但是nohup后和使用Celery都会报一个错误,大致意思是decode的第一个参数必须是String,因为当时nohup后就比较难看到Celery的日志,最后在本机模拟相同环境才知道原因,改为了res = urllib.quote(encodeStr.decode('utf-8').encode('utf-8'), '') 之后才可以。

最后,通过环境变量,在开发环境不使用Celery,在生成环境再使用:

扫描二维码关注公众号,回复: 5727394 查看本文章

猜你喜欢

转载自blog.csdn.net/qq_40925239/article/details/88894541