Forum: Ruby on Rails Processing uploaded XML file

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
78ee9d5c27eebd474b9552c6203571c0?d=identicon&s=25 Marc (Guest)
on 2008-12-19 20:40
(Received via mailing list)
Hi all

Sorry if this seems silly, only been learning Ruby and Rails for 2
weeks, though I have been programming since the Commodore 64 came out.

I need to process an XML file once it is uploaded (currently using
paperclip).
The problem is that the files can be quite slow to process, up to 30
seconds for some. Once this processing is done, I need to save that
data to the model to which the file is attached.

So my question is, where is the best place to call the processing
function from?
Will the processing block mongrel? Should it go in a new thread? If
so, how do I do that?
And is there any speedier Library than REXML for processing XML?

Thanks for your help
Marc
41cc2c53544016a86472343ab3fdc0ff?d=identicon&s=25 Simon Macneall (Guest)
on 2008-12-20 00:51
(Received via mailing list)
Hi Marc,

Yes, the processing will block mongrel, but you should have more than
one
mongrel (either using Passenger, or straight apache load balancing). The
bigger question is can your user wait 30 seconds for the response? There
are ways to run the process on a separate thread, but I haven't had to
do
that yet.

Yes, libXML is *much* faster than REXML. We are in the process of
changing
our code, but the XML code is entwined so far through our app it is a
big
job.

Cheers
Simon
78ee9d5c27eebd474b9552c6203571c0?d=identicon&s=25 Marc (Guest)
on 2008-12-20 06:55
(Received via mailing list)
Thanks for the info Simon.

As far as the users waiting goes, thats easy... They will wait as long
as I tell them to as long as I give them something to look at and a
reason (Spinning CD and a "Please wait, Reticulating Splines" message
perhaps). In fact the entire process isnt really a vital part of the
program, it is simply to display some extra information for other
users who may want to download it. So if that information was updated
say 5 minutes later, it wouldnt really matter.
In any event, I am having a look at starling and working to start a
threaded process in the background and update the record whenever it
finishes. If however libxml is as fast as you say, perhaps I simply
need to do some load balancing and make them wait.
Of course a major problem is that I still dont know where to call the
processor from. Rails can be extremely frustrating when you are still
learning it.

Thanks for the info Simon
Marc
This topic is locked and can not be replied to.