我见过一些文章,其中Clojure应用程序可以执行所谓的热交换代码.这意味着他们可以在运行时更新自己的函数.这在网络服务器上执行是否安全?
解决方法 如果可能的话,为了获得代码热插拔是很棘手的.它还取决于变更集和正在运行的应用程序.
问题:
>旧变量可能会丢弃命名空间并导致细微的冲突,错误
>重新定义多个变量不是原子的
如果重新启动应用程序,命名空间中可能会出现旧的变量,但是如果您只是重新定义某些函数并保持应用程序在不重新启动的情况下运行,则会产生干扰.
另一个问题是原子性:重新定义多个函数,即更改多个变量不是原子的.如果在一个或多个命名空间中更改某些其他命名空间中的代码所依赖的函数,则使用新代码重新加载命名空间不是原子的.
一般来说,你也会更好
>让代理保留请求,直到您的应用重启>启动与“旧版本”并行的新应用程序实例,并在新版本准备好处理请求后使用代理从新版本切换
总结以上是内存溢出为你收集整理的使用热交换代码的clojure的Web应用程序全部内容,希望文章能够帮你解决使用热交换代码的clojure的Web应用程序所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)