热更需要的步骤:
- 上传代码
- 拉取代码并执行
在上传和下载过程中, 我们不想传递明文, 也不想传送太多的数据
所以只需要:
- 压缩
- 解压
import zlib
import base64
x = 'print "hello world"'
# 压缩, 加密, 上传
t_code = base64.b64encode(zlib.compress(x))
print t_code
# 解密, 解压, 并执行
s_code = zlib.decompress(base64.b64decode(t_code))
print s_code
# 执行代码
exec s_code in {}
那么有了上面代码的核心思路之后, 我们只需要将我们的热更代码按照上面的压缩, 加密的流程放到某个服务器上, 需要执行的之后, 获取这段代码. 然后解密, 解压, 然后执行
因为压缩方式 和 加密方式是由我们自己决定的, 所以外部看来只是一段混乱的字符串, 不会造成什么问题.
exec s_code in {}
这一句, 就是在空的环境中执行, 即使执行这一句的环境中有一些modules, 也不会继承进去, 如果想要继承当前执行的环境, 那么可以这样写:exec s_code in globals()
或者exec s_code in locals()