I need my app to make a few hundreds requests to external web services
as quickly as possible. The web services are fairly fast, but still:
if I do the requests one after the other, it is too slow.
My understanding is I have two options:
a- Threads.
b- Typhoeus
Typhoeus seems great. Yet, the web services are all quite different
(some are SOAP, some REST…) and therefore wrapped into interfaces. I
might be able to implement Typhoeus but it means a lot of changes.
I have read that threads in Rails can be challenging to implement
especially when dealing with the DB. Yet, this part of my code doesn’t
do anything with ActiveRecord. Are threads generally “OK” if no
connection to the DB is involved?
Threads are not really threads in ruby, so forget about threads.
Instead use a background process for that. You can accomplish that using
some gem for creating background processes.
Delayed Job may be a solution for you.
The thing is, my main challenge here is speed: I have to wait for the
answers to the requests to be able “continue”. Therefore I am not sure
about background processes (or delayed job): are they going to make
the requests faster? Will they be able to run concurrently?
If you need speed, you can spawn multiple processes at the same time.
That
will increase your throughput. Logically that depends on how powerful
your
machine is.
You can check railscasts.com for background processing casts.
[]'s
Rodrigo D.
This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.