Why? Web产品一旦上线,重启应用就会造成业务中断,对于实时性要求很高或者业务关联紧密的应用,重启程序是非常重的代价。 将代码对象序列化之后保存到存储内(比如redis, 关系数据库),在运行业务的时候通过制定的路由机制加载这部分业务。 对于线上应用,使用这种方式可以更加方便的部署新业务。 对于性能要求不是很高的场合,可以牺牲一些性能做代码动态装载。
Python中的OS.fork,exec之类的行为,可能导致stdout所指向的FD发生变化,有时候无法在终端获得想要的输出,这时候可能需要在执行子进程的时候手工设置其FD。 参考: http://stackoverflow.com/questions/26578799/python-send-sigint-to-subprocess-using-os-kill-as-if-pressing...
简化并修改view_config装饰器 因为Pyramid自带的view_config装饰器非常复杂,需要配置的参数比较多,修改一下装饰器,每次可以少写一点代码…… def get_with_permission(**settings): # delete debug tag TODO view_configer = view_config(decorator=permiss...