python 写接口供外部调用
.py:
import requests
import urllib2
import commands
import subprocess def check():
status, msg = commands.getstatusoutput("ps -ef | grep build_lp.sh | grep -Fv grep")
if msg.find('build_lp.sh') > -1:
print("build_lp.sh still running wait 1 second...")
return True
return False def offer_build(cmd, path, mode):
if "/build_prod" == cmd:
while check():
time.sleep(1)
realcmd = 'source ~/.bash_profile && source ~/.bashrc && cd %s && mkdir -p logs && mkdir -p data && bash bin/build_lp.sh %s >> ./logs/build_lp.log' % (path, mode)
return commands.getstatusoutput(realcmd)
elif "/build_prod_async" == cmd:
while check():
return "", "please wait for a while"
realcmd = 'source ~/.bash_profile && source ~/.bashrc && cd %s && mkdir -p logs && mkdir -p data && bash bin/build_lp.sh %s >> ./logs/build_lp.log' % (path, mode)
subprocess.Popen(realcmd,shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
return 0, "done"
else:
print("method not found: support (/build_prod & /build_prod_async)")
return commands.getstatusoutput('free') def app(environ, start_response):
status, data = commands.getstatusoutput("ps -ef | grep start.sh | grep -Fv grep | awk '{print $10}'")
if data != "prod":
path = "/data1/menghui.lv/git/jupiteroffer/output" #debug
mode = "debug"
else:
path = "/data/jupiteroffer/output" #prod
mode = "prod"
timestamp = time.strftime("%Y-%m-%d %H:%M:%S")
rst = offer_build(environ['PATH_INFO'], path, mode)
ret = {}
ret['status'] = 'ok' if rst[0] == 0 else 'error'
ret['msg'] = rst[1]
with open('control.log', 'a') as fo:
fo.write("%s\t%s\t%s\n" %(timestamp, environ['PATH_INFO'], json.dumps(ret)))
data = json.dumps(ret)
start_response("200 OK", [
("Content-Type", "text/plain"),
("Content-Length", str(len(data)))
])
return iter([data])
print "hello" # end
.sh:
#!/usr/bin/env bash if [ $# == 0 ]; then
echo "bash start.sh debug or bash start.sh prod"
else
echo "$1"
mkdir -p logs
sleep 1
if [[ "prod" = $1 ]]; then
port=8386
else
port=8200
fi
nohup gunicorn -k gevent --log-syslog --max-requests=300 -w 5 -b 0.0.0.0:$port jupitercontrol:app >> ./logs/build.log 2>&1 &
#gunicorn -k gevent --log-syslog --max-requests=300 -w 5 -b 0.0.0.0:$port jupitercontrol:app
fi
# end
python 写接口供外部调用的更多相关文章
- Python写各大聊天系统的屏蔽脏话功能原理
Python写各大聊天系统的屏蔽脏话功能原理 突然想到一个视频里面弹幕被和谐的一满屏的*号觉得很有趣,然后就想用python来试试写写看,结果还真玩出了点效果,思路是首先你得有一个脏话存放的仓库好到时 ...
- python写红包的原理流程包含random,lambda其中的使用和见简单介绍
Python写红包的原理流程 首先来说说要用到的知识点,第一个要说的是扩展包random,random模块一般用来生成一个随机数 今天要用到ramdom中unifrom的方法用于生成一个指定范围的随机 ...
- Python写地铁的到站的原理简易版
Python地铁的到站流程及原理(个人理解) 今天坐地铁看着站牌就莫名的想如果用Python写其工作原理 是不是很简单就小试牛刀了下大佬们勿喷纯属小弟个人理解 首先来看看地铁上显示的站牌如下: 就想这 ...
- 用Python写一个简单的Web框架
一.概述 二.从demo_app开始 三.WSGI中的application 四.区分URL 五.重构 1.正则匹配URL 2.DRY 3.抽象出框架 六.参考 一.概述 在Python中,WSGI( ...
- 读书笔记汇总 --- 用Python写网络爬虫
本系列记录并分享:学习利用Python写网络爬虫的过程. 书目信息 Link 书名: 用Python写网络爬虫 作者: [澳]理查德 劳森(Richard Lawson) 原版名称: web scra ...
- Python写UTF8文件,UE、记事本打开依然乱码的问题
Python写UTF8文件,UE.记事本打开依然乱码的问题 Leave a reply 现象:使用codecs打开文件,写入UTF-8文本,正常无错误.用vim打开正常,但记事本.UE等打开乱码. 原 ...
- python 写的http后台弱口令爆破工具
今天来弄一个后台破解的Python小程序,哈哈,直接上代码吧,都有注释~~ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 ...
- python写xml文件
为了便于后续的读取处理,这里就将信息保存在xml文件中,想到得到的文件如下: 1 <?xml version="1.0" encoding="utf-8" ...
- Python之美[从菜鸟到高手]--一步一步动手给Python写扩展(异常处理和引用计数)
我们将继续一步一步动手给Python写扩展,通过上一篇我们学习了如何写扩展,本篇将介绍一些高级话题,如异常,引用计数问题等.强烈建议先看上一篇,Python之美[从菜鸟到高手]--一步一步动手给Pyt ...
随机推荐
- 微信小程序_(校园视)开发视频的展示页_上
微信小程序_(校园视) 开发用户注册登陆 传送门 微信小程序_(校园视) 开发上传视频业务 传送门 微信小程序_(校园视) 开发视频的展示页-上 传送门 微信小程序_(校园视) 开发视频的展示页-下 ...
- [CSP-S模拟测试]:那一天我们许下约定(DP+组合数学)
题目传送门(内部题2) 输入格式 每个测试点有多组测试数据.对于每组数据,有一行共三个整数$N$,$D$,$M$含义如题.输入结束标识为$“0 0 0”$ (不含引号). 输出格式 对于每组数据,输出 ...
- JavaWeb页面静态化之使用freemarker模板生成一个html静态页面
题外话: 页面静态化(展示数据从JSP页面变成HTML页面)实现方式-->模板技术 从本质上来讲,模板技术是一个占位符动态替换技术.一个完整的模板技术需要四个元素:①模板语言(使 ...
- git一键push至github脚本
######################################################################### # File Name: push.sh # Aut ...
- LeetCode 80. 删除排序数组中的重复项 II(Remove Duplicates from Sorted Array II)
题目描述 给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素最多出现两次,返回移除后数组的新长度. 不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成 ...
- .net 查壳工具
请问大神.NET查壳工具都有哪些? 已知的有DotNet Id 除了这个还有别的吗?脱MAXTOCODE发现是双壳.脱掉第一层还有一层,DotNet Id检测没壳了,但是反编译还是加密状态. 用 ...
- PHP中获取数组中单列的值
PHP中获取数组中单列的值如下: 利用PHP中的数组函数 array_column():返回数组中某个单列的值.(PHP 5.5+适用) 语法: array_column(array,column_k ...
- SLC-Microsoft:Microsoft Lifecycle Policy
ylbtech-SLC-Microsoft:Microsoft Lifecycle Policy Microsoft Lifecycle Policy The Microsoft Lifecycle ...
- Torvalds的linux
1991年,芬兰人林纳斯•托瓦兹在赫尔辛基大学上学,对操作系统很好奇,并且对MINIX只允许在教育上使用很不满(其不允许任何商业使用),于是开始写他自己的操作系统,这就是后来的Linux内核. 199 ...
- 在本地局域网 windows server 2008 下安装 Nginx 1.12.1
简介: Nginx ("engine x") 是高性能 HTTP.反向代理服务器,也是 IMAP/POP3/SMTP 代理服务器. Nginx 是由 Igor Sysoev 为俄罗 ...