python对外接口环境配置(linux)
来源:互联网 发布:骁龙优化的浏览器 编辑:程序博客网 时间:2024/05/24 05:04
一、安装java
略1.8版本
二、安装Python
查询python版本:python -V
CentOS 6.6自带的是Python 2.6.6,而编译llvm需要Python 2.7以上。
checking for python... /usr/bin/pythonchecking for python >= 2.7... not foundconfigure: error: found python 2.6.6 (/usr/bin/python); required >= 2.7
yum中最新的也是Python 2.6.6,只能下载Python 2.7.9的源代码自己编译安装。
操作步骤如下:
1)安装devtoolset
yum groupinstall "Development tools"
2)安装编译Python需要的包包
yum install zlib-develyum install bzip2-develyum install openssl-develyum install ncurses-develyum install sqlite-devel
3)下载并解压Python 2.7.9的源代码
cd /optwget --no-check-certificate https://www.python.org/ftp/python/2.7.9/Python-2.7.9.tar.xztar xf Python-2.7.9.tar.xzcd Python-2.7.9
4)编译与安装Python 2.7.9
./configure --prefix=/usr/localmake && make altinstall
5)将python命令指向Python 2.7.9
ln -s /usr/local/bin/python2.7 /usr/local/bin/python
6)检查Python版本
shsh-4.1# python -VPython 2.7.9
三、安装Gearmand
需要python环境和CC++环境(检测linux默认:python -V | gcc -v)
Gearmand主要对python本地服务包装对外的可调用服务
先安装扩展包:http://www.cnblogs.com/ruanqin/p/5983660.html
1.yum install boost-devel* gperf* libevent-devel* libuuid-devel
2.下载安装 gearmand
wget https://launchpad.net/gearmand/1.2/1.1.12/+download/gearmand-1.1.12.tar.gz(下载)
tar zxvf gearmand(解压)
cd gearmand
./configure(运行默认配置)
make && make install(安装)
说明:gearmand服务启动
客户端 通过run.sh启动 启动向服务端告知 使服务端监控到translate的调度转到当前客户端的./translate.py下执行
#!/usr/bin/env bashfor ((i=0;i<15;i++))do gearman -f translate -w -h 139.196.194.97 -- python ./translate.py & gearman -f translate -w -h 139.196.192.104 -- python ./translate.py & sleep 5sdone
服务端:命令启动:
gearmand -p 4730 ##(指定端口)
四、管理python项目
cd /hzy/software/gearmand/
配置python工作区:
一、安装get-pip.py (python依赖包管理下载器)
1.下载该文件到工作区间 执行安装命令python get-pip.py
(python包管理器:https://pypi.python.org/pypi/pip)
2.通过下载包安装:Code of Conduct 下载pip-9.0.1.tar 到工作区间
tar -zxvf pip-9.0.1.tar(解压)cd /pip-9.0.1/ :>python setup.py build(执行编译) :>python setup.py install(执行安装)
二、安装各种python依赖包(到工作区间目录)
1. 安装自然语言处理包
pip install nltk
2.下载自然语言数据包
vim downloadnltk.py(创建一个下载文件)
import nltkprint "nltk download"nltk.download('wordnet') ##单词原型lemanltk.download('punkt') ##单词tokennltk.download('averaged_perceptron_tagger') ##单词词性pos part-of-speechnltk.download('stopwords') ##停用词
执行下载数据包:
:>python downloadnltk.py (默认下载在用户目录下 /root/nltk_data/)
3.下载读取配置文件的包
:>pip install ConfigParser(命令行安装)
或者: 下载包安装:
下载:https://pypi.python.org/pypi/configparser/3.5.0
解压
build (python setup.py build)
install (python setup.py install)
#
一、总体打包:在gearmand-1.1.12目录上:
tar -zcvf gearmand_20170724.tar.gz --exclude=gearmand-1.1.12/nlp_tool/data --exclude=gearmand-1.1.12/nlp_tool/datafreq --exclude=gearmand-1.1.12/translate/data --exclude=gearmand-1.1.12/translate/datafreq --exclude=gearmand-1.1.12/translate/log gearmand-1.1.12
二、分项目对应
1.junor_three 作文评分
打包(排除某些目录):
tar -zcvf junor_three_20170724.tar.gz --exclude=junor_three/libs ----exclude=junor_three/libsA junor_three
上传:
>scp -r junor_three_20170724.tar.gz 127.0.0.1:/hzy/sad/ >password
解压:
tar -zxvf junor_three_20170724.tar.gz
2.nlp_tool 提取基础信息(词性 token 去除停用词 树形结构 依赖关系)
3.standford 放语言处理相关jar包
4.translate 口语评分
5.TOFEL 和1作文评分原理一致 评分接口
6.restaurant (特定情景下的对话)
7.offopic (判断偏题)
8.IELTS(雅思 和5原理一致 评分接口)
9.SCORE(托福和雅思一些公用的方法 5和8的调用)
五、java调用gearmand服务端
包含包:java-gearman-service-0.6.6.jar
json-lib-2.4-jdk15.jar
GearmanUtil类
package com.langying.utils;import java.util.HashMap;import java.util.Map;import java.util.concurrent.Callable;import org.gearman.Gearman;import org.gearman.GearmanClient;import org.gearman.GearmanJobEvent;import org.gearman.GearmanJobReturn;import org.gearman.GearmanServer;import net.sf.json.JSONObject;/** * Gearman工具类 * @author chuanye.wan * */public class GearmanUtil implements Callable<String> { private String english; private String translate; private boolean detail; public GearmanUtil(String english, String translate, boolean detail){ this.detail = detail; this.english = english; this.translate = translate; } @Override public String call() throws Exception { Map<String,Object> gearmanParam = new HashMap<String,Object>(); gearmanParam.put("translate", translate); gearmanParam.put("english", english); gearmanParam.put("detail", detail); JSONObject jsonObj = JSONObject.fromObject(gearmanParam); String content = jsonObj.toString(); return GearmanUtil.callGearman(content); } public static String callGearman(String content){ Gearman gearman = Gearman.createGearman(); GearmanClient client = gearman.createGearmanClient(); String serverAddress = Util.getProperty("gearmanconfig", "server_address"); int port = Integer.parseInt(Util.getProperty("gearmanconfig", "port")); GearmanServer server = gearman.createGearmanServer(serverAddress, port); client.addServer(server); char[] ca = content.toCharArray(); for (int i = 0; i < content.length(); i++) { if (ca[i] > 126 || ca[i] < 32){ content = content.replace(ca[i], ' '); } } System.out.println("content:" + content); GearmanJobReturn jobReturn = client.submitJob(Util.getProperty("gearmanconfig", "method"), content.getBytes()); String gearmanResult = null; while (!jobReturn.isEOF()) { GearmanJobEvent event = null; try { event = jobReturn.poll(); } catch (InterruptedException e) { System.out.println("######################################-----CC---Exception#############################3"); e.printStackTrace(); } switch (event.getEventType()) { case GEARMAN_JOB_SUCCESS: // job执行成功 gearmanResult = new String(event.getData()); break; case GEARMAN_SUBMIT_FAIL: // job提交失败 System.err.println(event.getEventType() + ": "+ new String(event.getData())); break; case GEARMAN_JOB_FAIL: // job执行失败 System.err.println(event.getEventType() + ": "+ new String(event.getData())); break; default: } } gearman.shutdown(); return gearmanResult; } /** * 针对人机只能对话的题型9 * @param content * @param functionName 调度方法名 * @return */ public static String callGearmanForDialog(String content , String functionName){ Gearman gearman = Gearman.createGearman(); GearmanClient client = gearman.createGearmanClient(); String serverAddress = Util.getProperty("gearmanconfig", "server_address"); int port = Integer.parseInt(Util.getProperty("gearmanconfig", "port")); GearmanServer server = gearman.createGearmanServer(serverAddress, port); client.addServer(server); char[] ca = content.toCharArray(); for (int i = 0; i < content.length(); i++) { if (ca[i] > 126 || ca[i] < 32){ content = content.replace(ca[i], ' '); } } GearmanJobReturn jobReturn = client.submitJob(functionName, content.getBytes()); String gearmanResult = null; while (!jobReturn.isEOF()) { GearmanJobEvent event = null; try { event = jobReturn.poll(); } catch (InterruptedException e) { e.printStackTrace(); } switch (event.getEventType()) { case GEARMAN_JOB_SUCCESS: // job执行成功 gearmanResult = new String(event.getData()); break; case GEARMAN_SUBMIT_FAIL: // job提交失败 System.err.println(event.getEventType() + ": "+ new String(event.getData())); break; case GEARMAN_JOB_FAIL: // job执行失败 System.err.println(event.getEventType() + ": "+ new String(event.getData())); break; default: } } gearman.shutdown(); return gearmanResult; }}
调度服务器gearmand 某个方法 并且传参数(参数都只能传一个且为byte型 所以 传参需要json格式 到python进行解析)
java调度gearmand服务端监控 服务端监控转发到注册的客户端gearmand client (多个注册则按注册顺序调度)
客户端gearmand 关联对应的python执行文件 python执行文件执行main函数并通过param_str = raw_input()获取 从而解析
#!/usr/bin/env python# coding:utf-8import osimport sysimport jsonimport timeimport tracebackimport datetimeimport randomsys.path.append("../nlp_tool/")from nlptool import Sentencesif __name__ == '__main__': __current_path = os.path.split(os.path.realpath(__file__))[0] log_file = os.path.join(__current_path, "log", repr(time.time())) try: __now = datetime.datetime.now() param_str = raw_input() param = json.loads(param_str) if type(param['english']) == type([]): result = {} sents_0 = Sentences(param["translate"]) to_continue = True if "type" in param.keys() and param["type"] == 3 and "pre_answer" in param.keys() and param["pre_answer"]: sents_pre = Sentences(param["pre_answer"]) tags = [item[1] for item in (reduce(lambda v1, v2: v1 + v2, sents_0.tag())[0:4] + reduce( lambda v1, v2: v1 + v2, sents_pre.tag())[0:4])] if "WP" not in tags and "WRB" not in tags and "WDT" not in tags: result["msg"] = u"至少有一句是特殊疑问句" # to_continue = False elif sents_0 * sents_pre > 0.9: result["msg"] = u"句意可能存在重复" # to_continue = False if not to_continue: for i in range(len(param["english"])): result[i + 1] = 0 else: for i in range(len(param["english"])): if param["english"][i]: if len(param["english"][i]) > 500: result[i + 1] = 0 else: sents_1 = Sentences(param["english"][i]) result[i + 1] = sents_0 * sents_1 else: result[i + 1] = 0 print json.dumps(result), else: sents_1 = Sentences(param['translate']) sents_2 = Sentences(param['english']) print sents_1 * sents_2, if (datetime.datetime.now() - __now).seconds > 60: f = open(log_file, 'a') f.write(param_str) f.flush() f.close() except Exception, e: f = open(log_file, 'a') traceback.print_exc(file=f) f.flush() f.close()
- python对外接口环境配置(linux)
- LINUX系统下caffe开发环境和python接口的配置(利用GPU和CUDNN加速)
- 免费WebService对外接口(汇总)
- 免费WebService对外接口(汇总)
- 免费WebService对外接口(汇总)
- 免费WebService对外接口(汇总)
- 免费WebService对外接口(汇总)
- 数据可视化环境Python接口的配置
- Linux配置python开发环境
- linux下python环境配置
- python环境配置-Linux系统
- linux环境安装CRF++及python接口
- Linux 内核时钟架构之时钟源模块对外接口
- 接口环境配置(一)
- WebService 写对外接口
- linux下Anaconda python 配置libsvm接口
- python图像处理环境配置(linux+windows)
- windows7(Linux)下配置python编程环境
- Spring Boot入门一:在Eclipse中使用Spring boot
- 8.8 奇异值分解
- mqtt向android推送消息(一)——发送端使用.net
- IPC之AIDL -- APK之间进程通信(入门)
- BZOJ 2351: [BeiJing2011]Matrix 哈希
- python对外接口环境配置(linux)
- 杭电暑期集训-Add More Zero
- Android.mk文件详解介绍
- C语言:变量的存储类型
- 短标记法
- nginx配置多个IP地址
- SpringMVC URL拦截器
- 欢迎使用CSDN-markdown编辑器
- java线程池优化--ThreadPoolExecutor机制