github - Automatiser les problèmes de déploiement à l'aide de Python
大家讲道理
大家讲道理 2017-05-24 11:35:21
0
1
1065

Mon travail est front-end, et récemment, je souhaite utiliser le webhook + Flask de GitHub pour effectuer un déploiement automatisé simple. Les exigences sont très simples :
extraire automatiquement le code via l'interface du webhook lorsqu'il y a une soumission et redémarrer uwsgi.

Nouveau sur Python, codez à la légère.

code flask (la structure des répertoires fait référence au répertoire dans "FLASK WEB Development", qui ne sera pas publié) ; le code principal est le suivant :

# coding=utf-8
import os
from flask import request, json, jsonify
from threading import Thread
from . import main


def restart():
    os.system('./reload.sh')


@main.route('/')
def welcome():
    user_agent = request.headers.get('User-Agent')
    return "Welcome, %s" % user_agent


@main.route('/webhook', methods=['POST'])
def webhook():
    print('---------------------begin----------------------')
    print(request.get_json())

    print('---------------------end----------------------')
    push_info = request.get_json()
    commit_info = push_info['commits']
    if push_info['ref'] == 'refs/heads/master':
        print('master分支有提交')
        print(push_info['commits'])
        os.system('git pull origin master')

    if push_info['commits'][0]['committer']['email'] == '**********@qq.com':
        print('确认是自己提交的')

    data = {
        'hello': 'world',
    }
    js = json.dumps(data)
    resp = jsonify(data)
    resp.status_code = 200
    t = Thread(target=restart,  daemon=True)
    t.start()
    return resp

code de script reload.sh

#/usr/bin/sh
sleep 10s
killall -s INT /www/webhook/bin/uwsgi
sleep 10s
uwsgi uwsgi.ini

Les problèmes rencontrés sont les suivants :

1.return语句不会执行,因为线程中把uwsgi杀死了
2.脚本关闭uwsgi报  `is taking too much time to die...NO MERCY !!!`
3.上一步时间太长导致uwsgi重启失败

Quelqu'un peut-il m'aider à comprendre ce qui ne va pas et comment y remédier

大家讲道理
大家讲道理

光阴似箭催人老,日月如移越少年。

répondre à tous(1)
習慣沉默

Redémarrez le serveur en utilisant :

ps -ef | grep uwsgi | grep -v -E 'grep' | xargs kill -USR1
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal