python conda实践 sanic框架gitee webhook实践

这篇具有很好参考价值的文章主要介绍了python conda实践 sanic框架gitee webhook实践。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

import subprocess
import hmac
import hashlib
import base64
from sanic.response import text
from sanic import Blueprint
from git import Repo

# 路由蓝图
hook_blue = Blueprint('hook_blue')


@hook_blue.route('/hook/kaifa', methods=["POST"])
async def kaifa(request):
    timestamp = request.headers.get('X-Gitee-Timestamp')
    # 秘钥
    secret = '**********'
    secret_enc = bytes(secret.encode('utf-8'))
    # 把 timestamp+"\n"+密钥 当做签名字符串 string_to_sign
    string_to_sign = '{}\n{}'.format(timestamp, secret)
    string_to_sign_enc = bytes(string_to_sign.encode('utf-8'))
    # 使用HmacSHA256算法计算签名,得到 hmac_code
    hmac_code = hmac.new(secret_enc, string_to_sign_enc,digestmod=hashlib.sha256).digest()
    # 将hmac_code进行Base64 encode
    my_sign = base64.b64encode(hmac_code).decode('utf-8')

    gitee_sign = request.json.get('sign')
    if my_sign == gitee_sign:
        gitrepo = Repo("/www/wwwroot/********/")
        remote = gitrepo.remote()
        info = remote.pull()
        return text(str(info))
    else:
        return text('签名错误')


@hook_blue.route('/hook/ceshi', methods=["POST"])
async def ceshi(request):
    timestamp = request.headers.get('X-Gitee-Timestamp')
    # 秘钥
    secret = '*******'
    secret_enc = bytes(secret.encode('utf-8'))
    # 把 timestamp+"\n"+密钥 当做签名字符串 string_to_sign
    string_to_sign = '{}\n{}'.format(timestamp, secret)
    string_to_sign_enc = bytes(string_to_sign.encode('utf-8'))
    # 使用HmacSHA256算法计算签名,得到 hmac_code
    hmac_code = hmac.new(secret_enc, string_to_sign_enc,digestmod=hashlib.sha256).digest()
    # 将hmac_code进行Base64 encode
    my_sign = base64.b64encode(hmac_code).decode('utf-8')

    gitee_sign = request.json.get('sign')
    if my_sign == gitee_sign:
        # 执行的命令
        cmd = r'git pull'
        # cwd指的是某个进程运行时所在的目录;cwd是“current working directory”的缩写
        cwd_path = r'/www/wwwroot/********/'
        process = subprocess.Popen(cmd, shell=True, cwd=cwd_path, stderr=subprocess.PIPE, stdin=subprocess.PIPE,
                                   stdout=subprocess.PIPE)
        process.wait()
        result = process.returncode
        if result == 0:
            return text("git 的拉取:成功")
        else:
            return text("git 的拉取:失败")
    else:
        return text('签名错误')

/******************************************************************/

conda后台运行python脚本shell脚本run.sh:

想以www用户运行脚本,记的切换到www用户,再启动脚本,

./run.sh start

#!/bin/bash

#应用入口文件
APP_NAME=/www/wwwroot/python-webhook/main.py
#进程关键字
PROCESS_KEYWORD=python-webhook

#使用说明,用来提示输入参数
usage(){
    echo "Usage: sh run.sh [start|stop|restart|status]"
}

#检查程序是否在运行
is_exist(){
    pid=`ps -ef|grep $PROCESS_KEYWORD|grep -v grep|awk '{print $2}'`
    if [ -z "${pid}" ];then
        return 1
    else
        return 0
    fi
}

#启动方法
start(){
    is_exist
    if [ $? -eq 0 ];then
        echo "${APP_NAME} is already running. pid=${pid}"
    else
        conda run --name python-webhook nohup python ${APP_NAME} >nohup.out 2>&1 &
    fi    
}

#停止方法
stop(){
  is_exist
  if [ $? -eq "0" ]; then
    ps -ef|grep $PROCESS_KEYWORD|grep -v grep|awk '{print $2}'|xargs kill -9
  else
    echo "${APP_NAME} is not running"
  fi  
}

#输出运行状态
status(){
  is_exist
  if [ $? -eq "0" ]; then
    echo "${APP_NAME} is running. Pid is ${pid}"
  else
    echo "${APP_NAME} is NOT running."
  fi
}

#重启方法
restart(){
  stop
  sleep 5
  start
}
 
#根据输入参数,选择执行对应方法,不输入则执行使用说明
case "$1" in
  "start")
    start
    ;;
  "stop")
    stop
    ;;
  "status")
    status
    ;;
  "restart")
    restart
    ;;
  *)
    usage
    ;;
esac

/*****************************************************************/

需要以哪个用户来运行python代码,就切换到哪个用户下进行安装:

1. 使用grep www /etc/passwd查看用户权限
$ grep www /etc/passwd
www:x:1001:1001::/home/www:/sbin/nologin
可以看出,www是/sbin/nologin禁止登录的。只要修改这个模式就可以了

2. 修改模式
$ usermod -s /bin/bash www
3. 再次查看状态
$ grep www /etc/passwd
www:x:997:995:www user:/var/cache/www:/bin/bash
4. 然后就可以用su - www切换了
$ su - www
1
5. 恢复的话改为/sbin/nologin即可
$ usermod -s /sbin/nologin www

开始安装:

miniconda和anaconda下载地址

https://docs.conda.io/en/latest/miniconda.html

Free Download | Anaconda

Centos7.9安装miniconda
Miniconda是一个 免费的 轻量级的 conda安装程序
conda是一个开源的包、环境管理器,能在同一个机器上安装不同Python版本的软件包及其依赖,以及在不同Python环境之间切换
Miniconda只包含conda、Python、pip、zlib等基础的文件和依赖包
Anaconda不仅包含conda、Python等基础文件,还包含很多装好的包,如:numpy、pandas
使用conda install命令可从Anaconda存储库中安装额外的conda包
下载Miniconda3-latest-Linux-x86_64.sh

wget https://mirrors.tuna.tsinghua.edu.cn/anaconda/miniconda/Miniconda3-latest-Linux-x86_64.sh
运行.sh

sudo sh Miniconda3-latest-Linux-x86_64.sh
输入安装的路径,如/usr/anconda3

添加/usr/anconda3到系统环境变量文件/etc/profile文件

sudo vi  /etc/profile
添加

export PATH=/usr/anconda3/bin:$PATH
激活生效,或重启

source /etc/profile
检测安装是否成功

conda -V
2、配置conda镜像源
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/
conda config --add channels http://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge/
conda config --add channels http://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/pytorch/

# optional
conda config --add channels http://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/msys2/

conda config --set show_channel_urls yes

/****************************************/

要卸载 Miniconda,请按照以下步骤进行操作:

打开终端或命令提示符窗口,确保以管理员权限运行。

根据你的操作系统,执行以下命令卸载 Miniconda:

在 Windows 上:

conda install anaconda-clean
anaconda-clean --yes

在 macOS 或 Linux 上:

conda install anaconda-clean
anaconda-clean --yes
在某些 Linux 发行版中,可能需要在命令前加上 sudo。

确认卸载操作。执行上述命令后,你将被要求确认卸载。请仔细阅读提示信息,然后输入 y 或 yes 确认卸载。

删除 Miniconda 安装目录:在终端中执行以下命令,将 <miniconda_install_dir> 替换为你的 Miniconda 安装目录:

rm -rf <miniconda_install_dir>
注意:请谨慎执行此命令,确保你删除的是正确的安装目录。

检查环境变量:卸载 Miniconda 后,你可能还需要手动删除与 Miniconda 相关的环境变量。在 Windows 上,可以通过 “控制面板” -> “系统和安全” -> “系统” -> “高级系统设置” -> “环境变量” 打开环境变量设置界面,然后检查并删除相关的环境变量。在 macOS 或 Linux 上,可以编辑 ~/.bashrc 或 ~/.bash_profile 文件,并删除相关的路径配置。

完成上述步骤后,你的系统应该已成功卸载 Miniconda。请确保在卸载之前备份你的数据,以防万一。

/**************************************************/

创建虚拟环境:

conda create -n python-webhook python=3.11

后台运行python脚本:

conda run --name python311-venv nohup python main.py >nohup.out 2>&1 &

python conda实践 sanic框架gitee webhook实践,python,conda,gitee

/*************************************************************/

conda可以配合其他python包管理工具一起使用,比如pipenv或者poetry,

conda安装好某个python版本的虚拟环境后,就在这个虚拟环境运行其他包管理工具即可,

比如poetry包管理的项目,虚拟环境安装好poetry工具后,运行poetry install即可安装好项目需要的依赖包,然后启动项目即可文章来源地址https://www.toymoban.com/news/detail-687598.html

到了这里,关于python conda实践 sanic框架gitee webhook实践的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • gitee连接Jenkins,webhook返回404问题

             使用gitee的webhook发现一个问题,url及密码都填写正确了,但在gitee平台测试webhook功能时,一直返回404,无法正常进行推送,经过好几天的疯狂查找问题,无论是跨域还是使用带token的url,解决权限都无法满足。后尝试使用其他git平台gitlab去处理(刚下载完git工具,还

    2024年04月15日
    浏览(21)
  • jenkins使用gitee插件自动部署webhook404问题记录

    结论: 问题原因没有找到,有大佬遇到相同问题,找到问题原因的请教一下,感谢,这是,另一种实现相同效果的方式, 这个问题解决了两天 找不到问题后来放弃了 退而求其次 我们使用通用的 webhook 触发下载插件 Generic Webhook Trigger jenkins安装Generic Webhook Trigger 在插件管理中安装以下

    2024年01月24日
    浏览(42)
  • sanic框架解决多进程共享缓存问题

    最近在用sanic框架做项目,今天需要处理多进程共享缓存问题,在网上搜索了很多,知道使用multiprocessing模块,但是导入后,直接使用会报错,然后看官网解决问题。 直接看官方文档点我哦 大致意思如下:

    2024年02月07日
    浏览(32)
  • 宝塔webhook的使用及配置gitee完成代码自动更新教程

    1.服务端安装git 首先去宝塔终端查看是否有装git(一般默认是安装了的) 如果没有就自行安装一下,在终端输入安装指令 如果是Ubuntu系统使用 sudo apt-get install git 安装git 完成git账户信息写入 生成公钥,输入下面命令后回车三下 查看公钥,按顺序输入下面代码,最后一个是获

    2024年02月11日
    浏览(42)
  • Operator 开发实践 四 (WebHook)

    1. WebHook介绍 我们知道访问Kubernetes API有好几种方式,比如使用kubectl命令、使用client-go之类的开发库、直接通过REST请求等。不管是一个使用kubectl的真人用户,还是一个Service Account,都可以通过API访问认证,这个过程官网有一张图描述得很直观 当一个访问请求发送到API Server的

    2024年02月07日
    浏览(27)
  • 【Web开发】Python实现Web服务器(Sanic)

    🍺基于Python的Web服务器系列相关文章编写如下🍺: 🎈【Web开发】Python实现Web服务器(Flask快速入门)🎈 🎈【Web开发】Python实现Web服务器(Flask案例测试)🎈 🎈【Web开发】Python实现Web服务器(Flask部署上线)🎈 🎈【Web开发】Python实现Web服务器(Tornado入门)🎈 🎈【Web开

    2024年02月06日
    浏览(34)
  • Python+PySide6之模型/视图/委托框架QListView案例实践

    Qt中的模型/视图/委托框架是一种数据与可视化相互分离的技术,起源于Smalltalk的设计模式——Mode/View/Controller(MVC,模型/视图/控制器),通常在构建用户界面时使用。 MVC是由3部分组成。Model是应用程序对象,View是它的界面展示,Controller定义了界面对用户输入的反应方式。 Q

    2024年02月21日
    浏览(30)
  • python飞书群机器人通过webhook发送消息

    python飞书群机器人通过webhook发送消息

    2024年02月06日
    浏览(41)
  • 批量生成,本地推理,人工智能声音克隆框架PaddleSpeech本地批量克隆实践(Python3.10)

    云端炼丹固然是极好的,但不能否认的是,成本要比本地高得多,同时考虑到深度学习的训练相对于推理来说成本也更高,这主要是因为它需要大量的数据、计算资源和时间等资源,并且对超参数的调整也要求较高,更适合在云端进行。 在推理阶段,模型的权重和参数不再调

    2024年02月09日
    浏览(37)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包