美文网首页Python语言与信息数据获取和机器学习程序员Python 运维
结合 Python、MySQL、Redis 发布订阅功能,实现

结合 Python、MySQL、Redis 发布订阅功能,实现

作者: My_Oh_My | 来源:发表于2017-06-28 22:43 被阅读0次
    Contrast

    结合 Python、MySQL、Redis 发布订阅功能,实现 Email 自动发送 HTML 模版邮件.

    1. Centos7 上搭建 Python3.6 开发环境

    这个可以产考我的另一篇文章CentOS7.3 编译安装 Python3.6.2

    使用 pip 安装以下库

    pip install sqlacodegen
    pip install mysql-connector==2.1.4
    pip install sqlalchemy
    pip install redis
    pip install requests
    pip install setuptools
    pip install pymysql
    

    查看已安装的库

    pip list
    

    ** pip 升级包**

    pip install --upgrade PackageName
    

    2. 查看Python安装路径

    Python交互模式下查看Python安装路径

        >>> import sys
        >>> path = sys.executable
        >>> print(path)
    

    命令行模式下查看Python安装路径

    • which python

    3. 使用SQLAlchemy创建数据模型

    pymysql

    sqlacodegen mysql+pymysql://root:653155073@192.168.0.107:3306/pythonemail > models.py
    

    也可以导出某一张表的数据模型

    sqlacodegen mysql+pymysql://root:653155073@192.168.0.107:3306/pyemail --tables test_user > models.py
    

    sqlalchemy

    sqlacodegen mysql+mysqlconnector://root:653155073@192.168.0.107:3306/pythonemail > models.py
    

    也可以导出某一张表的数据模型

    sqlacodegen mysql+mysqlconnector://root:653155073@192.168.0.107:3306/pyemail --tables test_user>models.py
    

    4. 开机自动启动脚本pythonemail

    #!/bin/sh
    #chkconfig: 23456 80 90
    #description:auto_run
    lock="subscription.py"
    start(){
            echo "service start...."
            su root -c "/usr/local/bin/python /usr/local/apache2/htdocs/python_email/Subscription/subscription.py &"
    }
    stop(){
        echo "service stop...." pkill -f $lock
    }
    status(){
            if [ -e $lock ];then
                echo "$0 service start"
            else
                echo "$0 service stop"
            fi
    }
    restart(){
            stop
            start
    }
    case "$1" in
    "start")
            start
            ;;
    "stop")
            stop
            ;;
    "status")
            status
            ;;
    "restart")
            restart
            ;;
    *)
            echo "$0 start|stop|status|restart"
            ;;
    esac
    

    把脚本 pythonemail 放入 /etc/rc.d/init.d 文件夹下

    脚本可以先执行一下看看报不报错

    cd /etc/rc.d/init.d
    chmod +x pythonemail
    ./pythonemail start
    

    赋予脚本权限

    cd /etc/rc.d/init.d
    chmod +x pythonemail
    chkconfig --add pythonemail
    chkconfig --list pythonemail
    

    这样脚本开机就会自动运行

    也可以后台静默执行,每一次重新开机启动需要重新执行命令

    cd /etc/rc.d/init.d
    chmod +x pythonemail
    nohup ./pythonemail start &
     回车
    exit
    

    不能直接关闭shell窗口,不然不会在后台静默执行,一定要exit退出登录后,再关闭shell窗口

    Tip:

    • CentOS重启命令:reboot
    • 如果邮件发送不出去也有可能是服务器端口的问题,需要在服务器安全组中打开对应的端口.

    这里我并不会讲具体的实现,只讲前期准备,具体的代码实现参考 Github 上的源码
    结合 Python、MySQL、Redis 发布订阅功能,实现 Email 自动发送,源码中有详细的注释说明,理解起来不难,欢迎大家提意见.

    相关文章

      网友评论

        本文标题:结合 Python、MySQL、Redis 发布订阅功能,实现

        本文链接:https://www.haomeiwen.com/subject/ojepcxtx.html