http - Rails local server sending and receiving requests at the same time -


so maybe not practice @ point web application coexisting its' api in same app/ under same server. wondering if there way speed how server process requests in case?

for example, when sending request api under same server, use:

require 'rest-client'  tasks = restclient.get 'localhost:8000/tasks',  {   content_type: :json,   accept: :json,   "x-user-email" => "blahblah@gmail.com",   "x-user-token" => "blahblah" } 

however, takes ridiculously long time result. or results in 'timeout reading data server' error. wondering if because server sending requests , receiving requests @ same time.i have tried opening server on port 8000, send request port 3000 server , faster. rails bad @ multithreading?

$ rails s -p 8000 -p 42323 

also, if refreshed port 8000 server page first , send request, refreshing port 3000 server page faster. because response has been cached rack?

p.s apologize if used different terms incorrectly.

edit:

i have tried debugging api , application controller. seems delay happens right before hitting api controller. server output if sending request port 8000 port 8000 api:

started "/" 127.0.0.1 @ 2016-11-11 17:37:14 +0800   user load (0.7ms)  select  "users".* "users" "users"."id" = $1  order "users"."id" asc limit 1  [["id", 1234567]] processing tasksapplicationcontroller#index html   started "/tasks" 127.0.0.1 @ 2016-11-11 17:38:14 +0800 processing apicontroller#index json 

so before start loading route api, 1 minute has passed!

so if tried having 2 local servers running , send request port 3000 port 8000 server, output of faster version:

started "/tasks" 127.0.0.1 @ 2016-11-11 17:42:25 +0800 processing apicontroller#index json 

the difference part of output gone, , 1-minute delay gone.

started "/" 127.0.0.1 @ 2016-11-11 17:37:14 +0800   user load (0.7ms)  select  "users".* "users" "users"."id" = $1  order "users"."id" asc limit 1  [["id", 1234567]] processing tasksapplicationcontroller#index html 

why if send request port 8000 server 8000 server, have additional part causes time delay?

the issue quite due fact running webrick in development mode. although webrick multi-threaded server , rails multi-threaded, when in development mode rails uses rake::lock middleware prevents concurrent requests.

to enable webrick multi-threaded in development mode need monkey-patch middleware , remove rake::lock creating following initialiser:

config/initializers/multithreaded_webrick.rb:

# remove rack::lock webrick can multi-threaded. require 'rails/commands/server'  class rails::server   def middleware     middlewares = []     middlewares << [rails::rack::debugger] if options[:debugger]     middlewares << [::rack::contentlength]      hash.new middlewares   end end 

edit found original source information:

how rails resolve multi-requests @ same time?

in addition initialiser may need set:

config.cache_classes = true config.eager_load = true 

Comments

Popular posts from this blog

sql server - Cannot query correctly (MSSQL - PHP - JSON) -

php - trouble displaying mysqli database results in correct order -

C++ Linked List -