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
Post a Comment