• python项目在麒麟V10上无法启动rabbitmq的问题记录


    1.背景

    Windows系统开发Python项目,通过docker在Windows系统中将Python打包为centos系统的可执行文件。
    将可执行文件部署到麒麟V10环境中,systemctl的启动命令可以正常调用,但是rabbitmqctl的命令调用后,没有生效。

    2.subprocess方式执行shell

    import subprocess
    def command():
        result = subprocess.Popen("source /etc/profile; /usr/local/rabbitmq/sbin/rabbitmq-server -detached", shell=True, stdout=subprocess.PIPE)
        logger.info("========shell执行结果 ========= {}".format(result.stdout.read()))
    
    • 1
    • 2
    • 3
    • 4

    2.1 判断执行是否出错

    在Python项目中通过输出语句,查看执行是否出错
    输出结果为空,执行语句增加; echo ‘success’,明确该语句已执行
    “source /etc/profile; /usr/local/rabbitmq/sbin/rabbitmq-server -detached; echo ‘success’”

    经测试,success能够打印,但是rabbitmq未正常启动

    3. os方式执行shell

    import os
    def rabbitmq_start():
        command = "source /etc/profile; /usr/local/rabbitmq/sbin/rabbitmq-server -detached; echo 'success'"
        values = os.popen(command).read()
        logger.info("========rabbitmq 启动========= {}".format(values))
    
    • 1
    • 2
    • 3
    • 4
    • 5
    经测试,success能够打印,但是rabbitmq未正常启动

    4. 通过Python3执行Python脚本

    import subprocess
    import logging
    command="export CONTROL=/usr/local/rabbitmq/sbin/rabbitmqctl; export HOME=/usr/local/rabbitmq/ ;export ERL_HOME=/usr/local/erlang; /usr/local/rabbitmq/sbin/rabbitmq-server -detached"
    subprocess.Popen(command, shell=True, stdout=subprocess.DEVNULL, close_fds=True)
    
    • 1
    • 2
    • 3
    • 4
    经测试,rabbitmq正常启动

    5.在麒麟V10系统中安装Python可执行环境

    将未编译的Python项目部署到系统中

    经测试,rabbitmq正常启动

    6.在麒麟V10系统中通过pyinstaller将Python项目打包为可执行文件

    执行可执行文件

    经测试,rabbitmq正常启动

    结论

    此次问题推测为centos内核与麒麟V10内核不一致导致。

  • 相关阅读:
    Echarts学习(一)
    Docker镜像分层
    Nginx SSL证书更新及密码套件更新
    前后端跨域
    [编程基础] Python内置模块collections使用笔记
    Java基础练习题---this
    视频汇聚/视频云存储/视频监控管理平台EasyCVR分发rtsp流起播慢优化步骤详解
    C++ std map unordered_map hash_map 的查找性能测试代码及结果
    算法的时间复杂度
    Optuna:带仪表盘的可视化的超参数优化
  • 原文地址:https://blog.csdn.net/weixin_45536587/article/details/126559013