我有一个非常基本的 Ruby Web 应用程序(目前在 Hanami 和 Rails 中),它为最终用户提供 VBS 脚本功能。
这目前仍在 Windows 上。
最终用户只需填写一个表单,Web 应用程序就会触发相应的脚本并向用户返回请求的数据或只是成功/失败通知。
我有并且无法解决的问题是,所有后续请求都等待当前请求完成。
我将 Hanami 或 Rails 与 Puma 或 Thin 一起使用。结果总是后续处理。尽管这仍处于开发阶段,但我也尝试了 Hanami 的生产模式。
对于 Rails,我也尝试过删除 Rack::Lock,但无济于事。
VBS 脚本本身通过 win32ole 库转换为 Ruby。
有趣的是,如果我从一个简单的 .rb 文件运行相同的脚本,如下所示:
threads = []
threads << Thread.new{
my_method(arg1, arg2)
}
threads << Thread.new{
my_method(arg1, arg2)
}
threads << Thread.new{
my_method(arg1, arg2)
}
threads.each {|t| t.join}
它们并行运行。
EDIT start: custom logs for pure ruby script
Connection [3] is opened at: 2019-02-25 10:11:10 +0100
Connection [4] is opened at: 2019-02-25 10:11:10 +0100
Connection [5] is opened at: 2019-02-25 10:11:13 +0100
User in connection [3] is logged in at: 2019-02-25 10:11:15 +0100
User in connection [4] is logged in at: 2019-02-25 10:11:16 +0100
User in connection [5] is logged in at: 2019-02-25 10:11:19 +0100
Params in connection [4] are set in system at: 2019-02-25 10:11:20 +0100
Params in connection [3] are set in system at: 2019-02-25 10:11:21 +0100
System in connection [4] is closed at: 2019-02-25 10:11:21 +0100
System in connection [3] is closed at: 2019-02-25 10:11:26 +0100
Params in connection [5] are set in system at: 2019-02-25 10:11:26 +0100
System in connection [5] is closed at: 2019-02-25 10:11:27 +0100
Connection [0] is opened at: 2019-02-25 10:11:03 +0100
Connection [1] is opened at: 2019-02-25 10:11:03 +0100
Connection [2] is opened at: 2019-02-25 10:11:05 +0100
User in connection [0] is logged in at: 2019-02-25 10:11:08 +0100
User in connection [2] is logged in at: 2019-02-25 10:11:10 +0100
User in connection [1] is logged in at: 2019-02-25 10:11:10 +0100
Params in connection [0] are set in system at: 2019-02-25 10:11:12 +0100
Params in connection [1] are set in system at: 2019-02-25 10:11:12 +0100
System in connection [0] is closed at: 2019-02-25 10:11:13 +0100
System in connection [1] is closed at: 2019-02-25 10:11:17 +0100
Params in connection [2] are set in system at: 2019-02-25 10:11:17 +0100
System in connection [2] is closed at: 2019-02-25 10:11:19 +0100
上面的日志只显示了几秒钟,但仍然可以看到操作不是完全按顺序进行的。此外,我看到脚本并行打开窗口并执行操作,而对于 Web 应用程序,很明显第二个脚本窗口在第一个窗口关闭之前不会打开。
EDIT end
EDIT 2 start -- nginx implementation
我已经添加了 nginx,结果是一样的。Web 应用程序仍然按顺序执行请求中的脚本。
EDIT 2 end
我被卡住了,不知道下一步该去哪里进行调试。
有没有人有任何想法?谢谢你。
塞巴