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年前都没有接触过前后端分离的项目.怎么理解前后端分离?直观的感觉就是前后端分开去做,即功 ...
随机推荐
- 【问题记录】springMVC @Valid使用不生效问题
问题描述 在网上找到如何使用@Valid注解后,就把用到的配置和jar包加上,然后测试发现一直不生效.下面是配置及解决方法 配置 1.引入依赖 2.添加相应的配置(springmvc配置文件) < ...
- 死磕abstractqueuedsynchronizer源码
第一次写博客,先练练手. 1.AQS是什么? 在Lock中,用到了一个同步队列AQS,全称为AbstractQueuedSynchronizer,它是一个同步工具也是lock用来实现线程同步的核心组件 ...
- 分类模型的F1-score、Precision和Recall 计算过程
分类模型的F1分值.Precision和Recall 计算过程 引入 通常,我们在评价classifier的性能时使用的是accuracy 考虑在多类分类的背景下 accuracy = (分类正确的样 ...
- 001_go语言中的hello world
代码演示: package main import "fmt" func main() { fmt.Println("hello world") } 代码解读: ...
- 用Python一键生成炫酷九宫格图片,火了朋友圈
- VisualSVN Server修改默认端口号 443->8443
- spring boot中集成Redis
1 pom.xml文件中添加依赖 <dependency> <groupId>org.springframework.boot</groupId> <arti ...
- Linux快速搭建C/C++开发环境
导读:越来越多的程序员在Linux下进行C/C++的开发.本文以CentOS 7为例,教你快速搭建一个vi + gcc/g++ + Make + valgrind的开发环境. 本文字数:1500,阅读 ...
- Java—面向对象、类与对象、封装
理解什么是面向过程.面向对象 面向过程与面向对象都是我们编程中,编写程序的一种思维方式. 面向过程的程序设计方式,是遇到一件事时,思考“我该怎么做”,然后一步步实现的过程. 面向对象的程序设计方式,是 ...
- Vue 父子组件表单同步校验
子组件代码 // 子组件 validateForm() { return new Promise((resolve, reject) => { this.$refs.contractBaseRe ...