python部署服務(wù)器如何不讓人查看源代碼?
可以考慮使用pymod工具,使用pymod pack 將模塊加密打包,發(fā)布的時候一個模塊就一個文件。
先睹為快,看看一個項目發(fā)布的時候,只有幾個文件,
main.py 項目程序入口
setting.py 項目配置
apps 項目模塊
plusins 項目插件目錄
創(chuàng)建項目 pymod create demo1
cd demo1
創(chuàng)建模塊 pymod add mod1
啟動pycharm 開始編寫功能模塊
一個模塊默認(rèn)由三個文件組成
__init__.py 、 handlers.py 、param_schemas.py
業(yè)務(wù)邏輯主要在handlers.py中編寫
__init__.py
from pymod.blueprint import Blueprint api = Blueprint("/mod1") from .handlers import *
param_schemas.py
schema_sfz = { "type": "object", "required": ["sfz", "nl"], "properties": { "sfz": { "type": "string", "minLength": 18, "maxLength": 18, "description": "身份證明號碼" }, "nl": { "type": "integer", "minimum": 0, "maximum": 150, "description": "年齡" } } }
handlers.py
from . import api from pymod.ext import RequestHandler, params_validate,TrueResponse,FalseResponse from .param_schemas import schema_sfz from pymod.plugins import sfz_check @api.add_route('/hello') class Hello(RequestHandler): def get(self): self.write('Hello World') @params_validate(schema_sfz) def post(self): sfz = self.get_json_arg("sfz") nl =self.get_json_arg("nl") # self.write(TrueResponse(sfz=sfz, nl=nl)) if sfz_check.check_sfzmhm(sfz): self.write(TrueResponse(hint="身份證明號碼驗證通過")) else: self.write(FalseResponse(hint="身份證明號碼驗證失敗"))
三、項目部署
程序調(diào)試 修改setting.py
# 開發(fā)模式下 運(yùn)行的模塊名稱必須填寫
modules = ["mod1"] modules_config ={ "mod1": { "deny_ip": "", "allow_ip": "*" } }
啟動程序 python main.py
調(diào)試沒有問題,進(jìn)入發(fā)布模式
在項目目錄下
pymod pack mod1
在target目錄下生成mod1.mod文件,將其復(fù)制到apps目錄中
修改setting.py
# 開發(fā)模式下 運(yùn)行的模塊名稱必須填寫
modules = []
再次運(yùn)行 python main.py 測試
一切OK,系統(tǒng)就可以發(fā)布了。