Tornado + vue.js 前后端分离运行脚本
shell脚本部分:
#!/bin/bash 主脚本
(./cem-demo_publish_front)
(./cem-demo_publish_backend) #!/bin/bash 后端脚本
cd /data/www/cem-base-demo && git pull && ./restart_all.sh #!/bin/bash 前端脚本
cd /data/www/cem-front-demo && rm -fr dist && git pull && npm run build
#cp /data/www/cem-front/index.html /data/www/cem-base/static/index_prod.html
cp -fr /data/www/cem-front-demo/dist /data/www/cem-base-demo/ #!/bin/bash restart_all.sh
python restart_port.py all 9060 4
Python restart_port.py 文件
# encoding=utf8 import sys
import commands
import os
import re
import getpass
import time
import requests current_user = getpass.getuser() def get_pid(port):
output = commands.getoutput('ps aux|grep "[p]ython main.py"')
lines = output.split('\n')
ps_dict = {}
re_obj = re.compile(r'%s +(\d+).*main\.py (\d+)$' % current_user)
for line in lines:
result = re_obj.findall(line)
if not result:
continue
pid, port1 = result[0]
ps_dict[port1] = pid return ps_dict.get(str(port)) def usage():
print 'Usage: restart_port.py <port|all> <port_from> <process_number>'
sys.exit(1) def kill_port(port):
pid = get_pid(port)
if pid:
cmd = 'kill -9 %s' % pid
print 'killing process ...'
status, output = commands.getstatusoutput(cmd)
# time.sleep(2)
print 'process %s for port %s is killed' % (pid, port) def restart_port(port):
pid = get_pid(port)
if pid:
cmd = 'kill -9 %s' % pid
status, output = commands.getstatusoutput(cmd)
time.sleep(1)
cmd = 'nohup python main.py %s >> logs/p_%s.log &' % (
port, port)
# status,output = commands.getstatusoutput(cmd)
os.system(cmd) def check_port_is_health(port):
need_check = True
while need_check:
time.sleep(1)
try:
response = requests.get('http://127.0.0.1:%s' % port)
if response.status_code == 200:
need_check = False
else:
need_check = True
print 'response.status_code=', response.status_code
except Exception, e:
print 'port=', port, str(e)
need_check = True
if need_check:
print 'port=', port
restart_port(port) if __name__ == '__main__':
try:
port = sys.argv[1]
except:
usage() if port == 'all':
try:
port_from = int(sys.argv[2])
except:
usage() try:
process_number = int(sys.argv[3])
except:
usage() for port in range(port_from, port_from + process_number):
restart_port(port)
# check_port_is_health(port)
elif port == 'kill':
try:
port_from = int(sys.argv[2])
except:
usage() try:
process_number = int(sys.argv[3])
except:
usage() for port in range(port_from, port_from + process_number):
kill_port(port)
else:
restart_port(port)
check_port_is_health(port)
restart_port.py
Tornado + vue.js 前后端分离运行脚本的更多相关文章
- python django框架+vue.js前后端分离
本文用于学习django+vue.js实现web前后端分离协作开发.以一个添加和删除数据库书籍应用为实例. django框架官方地址:https://www.djangoproject.com/ vu ...
- 全宇宙首个.NET5+Vue.js前后端分离以及业务模块化快速开发框架【NetModular】发布~
最近.Net圈子很热闹啊,我也来凑凑,今天中午耗时长达半小时,把NetModular升级到了.NET5,详情查看分支https://github.com/iamoldli/NetModular/tre ...
- Flask & Vue 构建前后端分离的应用
Flask & Vue 构建前后端分离的应用 最近在使用 Flask 制作基于 HTML5 的桌面应用,前面写过<用 Python 构建 web 应用>,借助于完善的 Flask ...
- gin+vue的前后端分离开源项目
该项目是gin+vue的前后端分离项目,使用gorm访问MySQL,其中vue前端是使用vue-element-admin框架简单实现的: go后台使用jwt,对API接口进行权限控制.此外,Web页 ...
- vue+springboot前后端分离实现单点登录跨域问题处理
最近在做一个后台管理系统,前端是用时下火热的vue.js,后台是基于springboot的.因为后台系统没有登录功能,但是公司要求统一登录,登录认证统一使用.net项目组的认证系统.那就意味着做单点登 ...
- 一套基于SpringBoot+Vue+Shiro 前后端分离 开发的代码生成器
一.前言 最近花了一个月时间完成了一套基于Spring Boot+Vue+Shiro前后端分离的代码生成器,目前项目代码已基本完成 止步传统CRUD,进阶代码优化: 该项目可根据数据库字段动态生成 c ...
- docker-compose 部署 Vue+SpringBoot 前后端分离项目
一.前言 本文将通过docker-compose来部署前端Vue项目到Nginx中,和运行后端SpringBoot项目 服务器基本环境: CentOS7.3 Dokcer MySQL 二.docker ...
- SpringBoot+Jpa+SpringSecurity+Redis+Vue的前后端分离开源系统
项目简介: eladmin基于 Spring Boot 2.1.0 . Jpa. Spring Security.redis.Vue的前后端分离的后台管理系统,项目采用分模块开发方式, 权限控制采用 ...
- 基于Vue的前后端分离项目实践
一.为什么需要前后端分离 1.1什么是前后端分离 前后端分离这个词刚在毕业(15年)那会就听说过,但是直到17年前都没有接触过前后端分离的项目.怎么理解前后端分离?直观的感觉就是前后端分开去做,即功 ...
随机推荐
- intel:spectre&Meltdown侧信道攻击(五)—— DRAM address mapping
前面介绍了row hammer,理论上很完美,实际操作的时候会面临很尴尬的问题:内存存储数据最小的单位是cell(就是个电容,充电是1,放电是0),无数个横着的cell组成row,无数个竖着的cell ...
- angularjs脏检查
angularjs实现了双向绑定,与vue的defineProperty不同,它的原理在于它的脏检查机制,以下做了一些总结: angular.js介绍 AngularJs是mvvm框架,它的组件是vm ...
- 【转载-学习】[一个前端必会的 Nginx免费教程 - 技术胖]
本文学习资料:https://www.jspang.com/detailed?id=39 Nginx官网:https://www.nginx.com/ Nginx:轻量级HTTP服务器: 采用事件驱动 ...
- FastAPI框架入门 基本使用, 模版渲染, form表单数据交互, 上传文件, 静态文件配置
安装 pip install fastapi[all] pip install unicorn 基本使用(不能同时支持,get, post方法等要分开写) from fastapi import Fa ...
- markdown公式指导手册
#Cmd Markdown 公式指导手册 标签: Tutorial 转载于https://www.zybuluo.com/codeep/note/163962#1%E5%A6%82%E4%BD%95% ...
- 有关vue中v-if和v-show的区别
其实这两个都是属于根据条件判断元素是否可见,但是还有有区别的哦! v-show:就是无论什么时候它其实都一直存在页面上也就是会渲染在DOM上,只是你写了条件让它可见或不可见而已,因为它本质是把它的cs ...
- Web测试转App测试不看不知道
Web测试 Web通常指的是互联网应用系统,比如税务电子化征管档案系统.金融数据平台.餐饮商家管理后台等等,其实质是C/S的程序. C是Client--客户端,S是Server--服务器. Web中的 ...
- RabbitMQ 基础概念进阶
上一篇 RabbitMQ 入门之基础概念 介绍了 RabbitMQ 的一些基础概念,本文再来介绍其中的一些细节和其它的进阶的概念. 一.消息生产者发送的消息不可达时如何处理 RabbitMQ 提供了消 ...
- 2020-07-04:tcp三次握手干了啥?time_wait什么时候出现?
福哥答案2020-07-04:三次握手如下:1.SYN j2.ACK j+1,SYN k3.ACK k+1 time_wait出现在断开连接第四次挥手的时候出现.TIME_WAIT状态存在有两个原因. ...
- PHP 开发工程师基础篇 - PHP 字符串
字符串 (String) 字符串是一系列字符的集合.如 “abc”. 在 PHP 中,一个字符代表一个字节,一个字节 (Byte) 有 8 比特 (bit). PHP 仅支持 256 字符集,因此 P ...