Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Handling Long Running Reports

I am working on a ASP.net application written in C# with Sql Server 2000 database. We have several PDF reports which clients use for their business needs. The problem is these reports take a while to generate (> 3 minutes). What usually ends up happening is when the user requests the report the request timeout kills the request before the web server has time to finish generating the report, so the user never gets a chance to download the file. Then the user will refresh the page and try again, which starts the entire report generation process over and still ends up timing out. (No we aren't caching reports right now; that is something I am pushing hard for...).

How do you handle these scenarios? I have an idea in my head which involves making an aysnchronous request to start the report generating and then have some javascript to periodically check the status. Once the status indicates the report is finished then make a separate request for the actual file.

Is there a simpler way that I am not seeing?

like image 941
Steven Williams Avatar asked Oct 01 '08 13:10

Steven Williams


People also ask

What is meant by running reports?

In the restaurant industry, running reports refers to pulling data from different sources and comparing said data against each other for real-time insights. Ideally, using one platform or dashboard.


1 Answers

Using the filesystem here is probably a good bet. Have a request that immediately returns a url to the report pdf location. Your server can then either kick off an external process or send a request to itself to perform the reporting. The client can poll the server (using http HEAD) for the PDF at the supplied url. If you make the filename of the PDF derive from the report parameters, either by using a hash or directly putting the parameters into the name you will get instant server side caching too.

like image 140
user7375 Avatar answered Oct 08 '22 20:10

user7375