github - 利用Python 自动化部署问题
问题描述
本职是前端,最近想利用GitHub的webhook + Flask 搞个简单的自动化部署,需求很简单:在有提交的时候通过webhook接口自动拉取代码,并重启uwsgi。
python新手,代码轻喷。
flask代码(目录结构参考的《FLASK WEB开发》中的目录,就不贴了);主要的代码如下:
# coding=utf-8import osfrom flask import request, json, jsonifyfrom threading import Threadfrom . import maindef 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脚本代码
#/usr/bin/shsleep 10skillall -s INT /www/webhook/bin/uwsgisleep 10suwsgi uwsgi.ini
遇到的问题如下:
1.return语句不会执行,因为线程中把uwsgi杀死了2.脚本关闭uwsgi报 `is taking too much time to die...NO MERCY !!!`3.上一步时间太长导致uwsgi重启失败
有木有大神帮忙看下有什么问题,可以怎么改
问题解答
回答1:重启服务器可以用:
ps -ef | grep uwsgi | grep -v -E ’grep’ | xargs kill -USR1
相关文章:
1. mysql建表报错,查手册看不懂,求解?2. php - mysql连表统计查询3. Navicat for mysql 中以json格式储存的数据存在大量反斜杠,如何去除?4. mysql - mybatis 查询 统计某个列数量 ,根据一个列,分组查询,在xml文件如何接收5. mysql时间格式问题6. MySQL数据库中文乱码的原因7. mysql - 分库分表、分区、读写分离 这些都是用在什么场景下 ,会带来哪些效率或者其他方面的好处8. mysql - 连续的24条sql语句,一条条查,还是union all好?9. MySQL不知道错哪里了?10. mysql主从复制 REPLICATE_DO_DB 参数从服务器reboot后每次都回滚为初始设置
