I have an application that accepts XML files through an HTTP POST, and
then needs to process these files and send back a response. On some
larger file sizes, this processing isn't occurring quickly enough, and
the HTTP request times out on the client side. In addition to this,
the server could be receiving several of these files at the same time,
leaving several clients hanging. I have been doing some reading
regarding handling background processing, and was wondering if anybody
had any experience with it?
What I'm hoping to do is to receive the XML document, and then send
back a response to the client right away, before handling the
processing. In my reading I have seen that some possible solutions
might be to use ScriptRunner, or possibly to create a new Thread to
handle the processing. Does anybody have some advice on a good way to
handle this situation?
Personally, I wouldn’t go with either of those solutions… use Backgroundrb, this is exactly what it is built for… it interfaces seamlessly with Rails and will do exactly what you’re asking for. You can find out about it at: http://backgroundrb.rubyforge.org/
You create worker objects that go about business that you define for them. These workers can be initialised by user driven events such as the xml upload in your case, or periodically from the time when the backgroundrb server is started.