1. Python環境安裝【目前使用版本爲:python2.7.5】javascript
2. 安裝服務啓動須要模塊html
yum install python-pip :若是沒法直接經過下載安裝,請移步至官方下載: https://pypi.python.org/pypi/pip/;下載時使用版本pip-8.1.0.tar.gz
若是下載本地環境的話,須要上傳至服務器:java
tar -zxvf pip-8.1.0.tar.gz cd pip-8.1.0 python setup.py install
安裝成功以下圖:python
3. 安裝依賴環境:json
pip install flask
安裝成功效果以下圖:flask
注:若是出現上圖中的黃色提示信息,請按提供進行pip版本的升級,執行命令:pip install --upgrade pip服務器
pip install validictory
安裝成功效果圖:app
pip install logging
安裝成功效果圖:python2.7
pip install langid
安裝效果圖:ide
4. 啓動服務:nohup python Language_Detection.py &
服務具體代碼以下:
# coding=utf8 ''' Created on 2015年4月17日 @author: Jack 傑之藍 ''' import langid from flask import Flask, request, abort, Response import logging import json import validictory class Language_detection: def __init__(self,logger): self.logger = logger def post(self): if not request.json: abort(400) self.logger.info('Received new task [POST]') self.logger.info(request.json) result = self._dispatch_task(request.json) return self._wrap_result(result) def get(self): args = request.args.to_dict() self.logger.info(args) result = self._dispatch_task(args) self.logger.info('Received new task [GET]') return self._wrap_result(result) def _dispatch_task(self,task): result = {} try: self._validate(task) except ValueError as e: return {"errorCode":1, "errorMessage": str(e)} try: result['result'] = langid.classify(task['text'])[0] except ValueError as e: return {"errorCode":2, "errorMessage": str(e)} result['errorCode'] = 0 result['errorMessage'] = 'Succeed' return result def _wrap_result(self,result): dump = json.dumps(result, encoding = 'utf-8', ensure_ascii=False, indent=4) callback = request.args.get('jsoncallback') if callback: return '%s(%s)' % (callback, dump) else: return Response(json.dumps(result, encoding='utf-8', ensure_ascii=False, indent=4), mimetype='application/javascript') def _validate(self,task): schema = { 'type': 'object', 'properties': { 'text': {'type': "string"} }, } validictory.validate(task,schema) def main(): app = Flask(__name__) logging.basicConfig(level=logging.DEBUG, format="%(asctime)s - %(name)s - %(message)s") logger = logging.getLogger('Language detection') detection = Language_detection(logger) app.route('/detection', methods = ['POST'])(detection.post) app.route('/detection')(detection.get) app.run(host = '', port = 9006, threaded = True) if __name__ == "__main__": main()
5. 服務調用:
http://172.16.4.200:9006/detection?text=你好,傑之藍
調用結果:
{ "errorCode": 0, "errorMessage": "Succeed", "result": "zh" }