【Rails App】 应用服务器从Passenger切换为Puma, Grape出现线程安全问题
2024-10-09 13:19:45
Grape中的代码如下:
def market
@market ||= Market.find(params[:id])
end
@market基于类层次的实例变量,属于非线程安全,如果一直使用多线程服务器,可以使用 Thread.current
代替:
def market
Thread.current[:market] ||= Market.find(params[:id])
end
如果考虑到以后哦使用其他类型服务器,比如 Thin, 可以使用 request_store gem 包,参考: https://github.com/steveklabnik/request_store
参考:
https://github.com/ruby-grape/grape-rabl/issues/37
https://ruby-china.org/topics/30188
https://stackoverflow.com/questions/9558192/thread-safety-class-variables-in-ruby
最新文章
- Socket通信功能实现
- 在centos上配置IP
- mysql group_concat 使用 (按分组组合字段)
- 【poj2823】 Sliding Window
- C#检测驱动是否安装的问题
- 重写Equals为什么要同时重写GetHashCode
- ubuntu + subversion + apache2 设置
- webApi跨域
- PHP框架 Laravel Eloquent ORM 批量插入数据 &;&; 批量更新目前没有
- Android 自学之基本界面组件(上)
- c#中字符串截取使用的方法
- SGU 165.Basketball
- oc对象互相引用内存释放解决方案
- 可爱的 Python : Python中函数式编程,第一部分
- NOIP2017D2T3 列队—Treap
- MT【293】拐点处切线
- Dev-C++安装第三方库boost
- Maven入门介绍
- ArcGIS Server 服务器日志(待修改)
- MYSQL数据库的参数文件
热门文章
- Git世界历险记
- Android学习笔记二之初始Activity
- Python全栈开发记录_第七篇(模块_time_datetime_random_os_sys_hashlib_logging_configparser_re)
- (Python基础)文件操作
- S表示1,L表示2,计算由S和L组成的序列之和为N的组合
- Tools:实现ping操作带时间戳【windows+linux】
- Timer与TimerTask
- eclipse启动tomcat正常,但是debug启动报错FATAL ERROR in native method:JDWP No transports initialized,jvmtiError=AGENT_ERROR_TRANSPORT_INIT(197) ERROR: transport error 202: connect failed:Connection timed out
- HTML5 使用 JS 生成二维码,带头像
- mybatis映射文件#与$的使用,及参数传入规则