国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

python conda實(shí)踐 sanic框架gitee webhook實(shí)踐

這篇具有很好參考價(jià)值的文章主要介紹了python conda實(shí)踐 sanic框架gitee webhook實(shí)踐。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

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

# 路由藍(lán)圖
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"+密鑰 當(dāng)做簽名字符串 string_to_sign
    string_to_sign = '{}\n{}'.format(timestamp, secret)
    string_to_sign_enc = bytes(string_to_sign.encode('utf-8'))
    # 使用HmacSHA256算法計(jì)算簽名,得到 hmac_code
    hmac_code = hmac.new(secret_enc, string_to_sign_enc,digestmod=hashlib.sha256).digest()
    # 將hmac_code進(jìn)行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('簽名錯(cuò)誤')


@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"+密鑰 當(dāng)做簽名字符串 string_to_sign
    string_to_sign = '{}\n{}'.format(timestamp, secret)
    string_to_sign_enc = bytes(string_to_sign.encode('utf-8'))
    # 使用HmacSHA256算法計(jì)算簽名,得到 hmac_code
    hmac_code = hmac.new(secret_enc, string_to_sign_enc,digestmod=hashlib.sha256).digest()
    # 將hmac_code進(jìn)行Base64 encode
    my_sign = base64.b64encode(hmac_code).decode('utf-8')

    gitee_sign = request.json.get('sign')
    if my_sign == gitee_sign:
        # 執(zhí)行的命令
        cmd = r'git pull'
        # cwd指的是某個(gè)進(jìn)程運(yùn)行時(shí)所在的目錄;cwd是“current working directory”的縮寫(xiě)
        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('簽名錯(cuò)誤')

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

conda后臺(tái)運(yùn)行python腳本shell腳本run.sh:

想以www用戶運(yùn)行腳本,記的切換到www用戶,再啟動(dòng)腳本,

./run.sh start

#!/bin/bash

#應(yīng)用入口文件
APP_NAME=/www/wwwroot/python-webhook/main.py
#進(jìn)程關(guān)鍵字
PROCESS_KEYWORD=python-webhook

#使用說(shuō)明,用來(lái)提示輸入?yún)?shù)
usage(){
?? ?echo "Usage: sh run.sh [start|stop|restart|status]"
}

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

#啟動(dòng)方法
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 ?
}

#輸出運(yùn)行狀態(tài)
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
}
?
#根據(jù)輸入?yún)?shù),選擇執(zhí)行對(duì)應(yīng)方法,不輸入則執(zhí)行使用說(shuō)明
case "$1" in
? "start")
? ? start
? ? ;;
? "stop")
? ? stop
? ? ;;
? "status")
? ? status
? ? ;;
? "restart")
? ? restart
? ? ;;
? *)
? ? usage
? ? ;;
esac

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

需要以哪個(gè)用戶來(lái)運(yùn)行python代碼,就切換到哪個(gè)用戶下進(jìn)行安裝:

1. 使用grep www /etc/passwd查看用戶權(quán)限
$ grep www /etc/passwd
www:x:1001:1001::/home/www:/sbin/nologin
可以看出,www是/sbin/nologin禁止登錄的。只要修改這個(gè)模式就可以了

2. 修改模式
$ usermod -s /bin/bash www
3. 再次查看狀態(tài)
$ grep www /etc/passwd
www:x:997:995:www user:/var/cache/www:/bin/bash
4. 然后就可以用su - www切換了
$ su - www
1
5. 恢復(fù)的話改為/sbin/nologin即可
$ usermod -s /sbin/nologin www

開(kāi)始安裝:

miniconda和anaconda下載地址

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

Free Download | Anaconda

Centos7.9安裝miniconda
Miniconda是一個(gè) 免費(fèi)的 輕量級(jí)的 conda安裝程序
conda是一個(gè)開(kāi)源的包、環(huán)境管理器,能在同一個(gè)機(jī)器上安裝不同Python版本的軟件包及其依賴,以及在不同Python環(huán)境之間切換
Miniconda只包含conda、Python、pip、zlib等基礎(chǔ)的文件和依賴包
Anaconda不僅包含conda、Python等基礎(chǔ)文件,還包含很多裝好的包,如:numpy、pandas
使用conda install命令可從Anaconda存儲(chǔ)庫(kù)中安裝額外的conda包
下載Miniconda3-latest-Linux-x86_64.sh

wget https://mirrors.tuna.tsinghua.edu.cn/anaconda/miniconda/Miniconda3-latest-Linux-x86_64.sh
運(yùn)行.sh

sudo sh Miniconda3-latest-Linux-x86_64.sh
輸入安裝的路徑,如/usr/anconda3

添加/usr/anconda3到系統(tǒng)環(huán)境變量文件/etc/profile文件

sudo vi ?/etc/profile
添加

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

source /etc/profile
檢測(cè)安裝是否成功

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,請(qǐng)按照以下步驟進(jìn)行操作:

打開(kāi)終端或命令提示符窗口,確保以管理員權(quán)限運(yùn)行。

根據(jù)你的操作系統(tǒng),執(zhí)行以下命令卸載 Miniconda:

在 Windows 上:

conda install anaconda-clean
anaconda-clean --yes

在 macOS 或 Linux 上:

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

確認(rèn)卸載操作。執(zhí)行上述命令后,你將被要求確認(rèn)卸載。請(qǐng)仔細(xì)閱讀提示信息,然后輸入 y 或 yes 確認(rèn)卸載。

刪除 Miniconda 安裝目錄:在終端中執(zhí)行以下命令,將 <miniconda_install_dir> 替換為你的 Miniconda 安裝目錄:

rm -rf <miniconda_install_dir>
注意:請(qǐng)謹(jǐn)慎執(zhí)行此命令,確保你刪除的是正確的安裝目錄。

檢查環(huán)境變量:卸載 Miniconda 后,你可能還需要手動(dòng)刪除與 Miniconda 相關(guān)的環(huán)境變量。在 Windows 上,可以通過(guò) “控制面板” -> “系統(tǒng)和安全” -> “系統(tǒng)” -> “高級(jí)系統(tǒng)設(shè)置” -> “環(huán)境變量” 打開(kāi)環(huán)境變量設(shè)置界面,然后檢查并刪除相關(guān)的環(huán)境變量。在 macOS 或 Linux 上,可以編輯 ~/.bashrc 或 ~/.bash_profile 文件,并刪除相關(guān)的路徑配置。

完成上述步驟后,你的系統(tǒng)應(yīng)該已成功卸載 Miniconda。請(qǐng)確保在卸載之前備份你的數(shù)據(jù),以防萬(wàn)一。

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

創(chuàng)建虛擬環(huán)境:

conda create -n python-webhook python=3.11

后臺(tái)運(yùn)行python腳本:

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

python conda實(shí)踐 sanic框架gitee webhook實(shí)踐,python,conda,gitee

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

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

conda安裝好某個(gè)python版本的虛擬環(huán)境后,就在這個(gè)虛擬環(huán)境運(yùn)行其他包管理工具即可,

比如poetry包管理的項(xiàng)目,虛擬環(huán)境安裝好poetry工具后,運(yùn)行poetry install即可安裝好項(xiàng)目需要的依賴包,然后啟動(dòng)項(xiàng)目即可文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-687598.html

到了這里,關(guān)于python conda實(shí)踐 sanic框架gitee webhook實(shí)踐的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • gitee連接Jenkins,webhook返回404問(wèn)題

    gitee連接Jenkins,webhook返回404問(wèn)題

    ? ? ? ? ?使用gitee的webhook發(fā)現(xiàn)一個(gè)問(wèn)題,url及密碼都填寫(xiě)正確了,但在gitee平臺(tái)測(cè)試webhook功能時(shí),一直返回404,無(wú)法正常進(jìn)行推送,經(jīng)過(guò)好幾天的瘋狂查找問(wèn)題,無(wú)論是跨域還是使用帶token的url,解決權(quán)限都無(wú)法滿足。后嘗試使用其他git平臺(tái)gitlab去處理(剛下載完git工具,還

    2024年04月15日
    瀏覽(26)
  • jenkins使用gitee插件自動(dòng)部署webhook404問(wèn)題記錄

    jenkins使用gitee插件自動(dòng)部署webhook404問(wèn)題記錄

    結(jié)論: 問(wèn)題原因沒(méi)有找到,有大佬遇到相同問(wèn)題,找到問(wèn)題原因的請(qǐng)教一下,感謝,這是,另一種實(shí)現(xiàn)相同效果的方式, 這個(gè)問(wèn)題解決了兩天 找不到問(wèn)題后來(lái)放棄了 退而求其次 我們使用通用的 webhook 觸發(fā)下載插件 Generic Webhook Trigger jenkins安裝Generic Webhook Trigger 在插件管理中安裝以下

    2024年01月24日
    瀏覽(54)
  • sanic框架解決多進(jìn)程共享緩存問(wèn)題

    sanic框架解決多進(jìn)程共享緩存問(wèn)題

    最近在用sanic框架做項(xiàng)目,今天需要處理多進(jìn)程共享緩存問(wèn)題,在網(wǎng)上搜索了很多,知道使用multiprocessing模塊,但是導(dǎo)入后,直接使用會(huì)報(bào)錯(cuò),然后看官網(wǎng)解決問(wèn)題。 直接看官方文檔點(diǎn)我哦 大致意思如下:

    2024年02月07日
    瀏覽(18)
  • 寶塔webhook的使用及配置gitee完成代碼自動(dòng)更新教程

    寶塔webhook的使用及配置gitee完成代碼自動(dòng)更新教程

    1.服務(wù)端安裝git 首先去寶塔終端查看是否有裝git(一般默認(rèn)是安裝了的) 如果沒(méi)有就自行安裝一下,在終端輸入安裝指令 如果是Ubuntu系統(tǒng)使用 sudo apt-get install git 安裝git 完成git賬戶信息寫(xiě)入 生成公鑰,輸入下面命令后回車(chē)三下 查看公鑰,按順序輸入下面代碼,最后一個(gè)是獲

    2024年02月11日
    瀏覽(18)
  • Operator 開(kāi)發(fā)實(shí)踐 四 (WebHook)

    Operator 開(kāi)發(fā)實(shí)踐 四 (WebHook)

    1. WebHook介紹 我們知道訪問(wèn)Kubernetes API有好幾種方式,比如使用kubectl命令、使用client-go之類的開(kāi)發(fā)庫(kù)、直接通過(guò)REST請(qǐng)求等。不管是一個(gè)使用kubectl的真人用戶,還是一個(gè)Service Account,都可以通過(guò)API訪問(wèn)認(rèn)證,這個(gè)過(guò)程官網(wǎng)有一張圖描述得很直觀 當(dāng)一個(gè)訪問(wèn)請(qǐng)求發(fā)送到API Server的

    2024年02月07日
    瀏覽(11)
  • 【W(wǎng)eb開(kāi)發(fā)】Python實(shí)現(xiàn)Web服務(wù)器(Sanic)

    【W(wǎng)eb開(kāi)發(fā)】Python實(shí)現(xiàn)Web服務(wù)器(Sanic)

    ??基于Python的Web服務(wù)器系列相關(guān)文章編寫(xiě)如下??: ??【W(wǎng)eb開(kāi)發(fā)】Python實(shí)現(xiàn)Web服務(wù)器(Flask快速入門(mén))?? ??【W(wǎng)eb開(kāi)發(fā)】Python實(shí)現(xiàn)Web服務(wù)器(Flask案例測(cè)試)?? ??【W(wǎng)eb開(kāi)發(fā)】Python實(shí)現(xiàn)Web服務(wù)器(Flask部署上線)?? ??【W(wǎng)eb開(kāi)發(fā)】Python實(shí)現(xiàn)Web服務(wù)器(Tornado入門(mén))?? ??【W(wǎng)eb開(kāi)

    2024年02月06日
    瀏覽(21)
  • Python+PySide6之模型/視圖/委托框架QListView案例實(shí)踐

    Python+PySide6之模型/視圖/委托框架QListView案例實(shí)踐

    Qt中的模型/視圖/委托框架是一種數(shù)據(jù)與可視化相互分離的技術(shù),起源于Smalltalk的設(shè)計(jì)模式——Mode/View/Controller(MVC,模型/視圖/控制器),通常在構(gòu)建用戶界面時(shí)使用。 MVC是由3部分組成。Model是應(yīng)用程序?qū)ο?,View是它的界面展示,Controller定義了界面對(duì)用戶輸入的反應(yīng)方式。 Q

    2024年02月21日
    瀏覽(29)
  • python飛書(shū)群機(jī)器人通過(guò)webhook發(fā)送消息

    python飛書(shū)群機(jī)器人通過(guò)webhook發(fā)送消息

    2024年02月06日
    瀏覽(24)
  • 批量生成,本地推理,人工智能聲音克隆框架PaddleSpeech本地批量克隆實(shí)踐(Python3.10)

    云端煉丹固然是極好的,但不能否認(rèn)的是,成本要比本地高得多,同時(shí)考慮到深度學(xué)習(xí)的訓(xùn)練相對(duì)于推理來(lái)說(shuō)成本也更高,這主要是因?yàn)樗枰罅康臄?shù)據(jù)、計(jì)算資源和時(shí)間等資源,并且對(duì)超參數(shù)的調(diào)整也要求較高,更適合在云端進(jìn)行。 在推理階段,模型的權(quán)重和參數(shù)不再調(diào)

    2024年02月09日
    瀏覽(26)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包