Mein Job ist Front-End, und seit Kurzem möchte ich den Webhook + Flask von GitHub verwenden, um eine einfache automatisierte Bereitstellung durchzuführen:
Bei einer Übermittlung wird der Code automatisch über die Webhook-Schnittstelle abgerufen und uwsgi neu gestartet.
Neu in Python, programmieren Sie leicht.
Flask-Code (die Verzeichnisstruktur bezieht sich auf das Verzeichnis in „FLASK WEB Development“, das nicht veröffentlicht wird); der Hauptcode lautet wie folgt:
# 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
reload.sh-Skriptcode
#/usr/bin/sh
sleep 10s
killall -s INT /www/webhook/bin/uwsgi
sleep 10s
uwsgi uwsgi.ini
Die aufgetretenen Probleme sind wie folgt:
1.return语句不会执行,因为线程中把uwsgi杀死了
2.脚本关闭uwsgi报 `is taking too much time to die...NO MERCY !!!`
3.上一步时间太长导致uwsgi重启失败
Kann mir jemand helfen herauszufinden, was falsch ist und wie ich es beheben kann
重启服务器可以用: