Я пытаюсь понять параллелизм Ruby с приложением Sinatra.
Вот оно:Как выполнять две функции одновременно от одного маршрута в Синатре?
require 'sinatra'
get '/a' do
sleep 10
"result_a"
end
get '/b' do
"result_b"
end
Если я запускаю его как ruby app.rb
или shotgun app.rb
, а затем перейти и к /а, а затем /б - /б не будет загружен до /а выполняет и загружает себя.
Когда я раскрываю это приложение для Heroku, хотя, и перейти к /а затем /б, /б загружается сразу.
Как я понимаю, процесс Heroku равен . Параллельно (или многопоточно?) В отличие от моих локальных процессов.
Мои вопросы: как запускать мое приложение одновременно на локальном сервере? Можно ли запускать, например, две функции одновременно с одного маршрута?
Ах. Нет. Похоже, вам, возможно, понадобится использовать «Thread» Ruby. То, над чем вы работаете, - довольно сложная проблема, но не невозможная. –
И Единорог позволит мне запускать несколько функций одновременно с одного маршрута? [получил это, Ruby's 'Thread', спасибо] – lakesare
Единорог позволит вам одновременно запускать два отдельных фрагмента кода с одного и того же маршрута или один и тот же фрагмент кода одновременно. Это зависит от того, что вы настроили для своего маршрута. Однако Единорог не позволит вам действовать на одном и том же объекте в памяти из контекста двух отдельных запросов. –