Hi Ashley,
The web server isn't likely to timeout, the thread runs for as long as necessary, but the client using your web service is very likely to get bored and wander off.
You could either:
1. Continue as is, and tell the client the response can take a very long time, and its their responsibility to hang around for the result
or
2. Accept the request for the report and then have another end point they can poll, and once the report is available it will be served by that end point (but this is pretty crappy, as the poll can cause unnecessary load on your end and theirs - but often the only solution in some circumstances)
or
3. Ask them for a "WebHook" which is like a callback and once you have produced the report you can POST it to their nominated end point. This only works if your client is a web server style system not behind a firewall etc (this is arguably best practice).
or
4. Email them the report (pragmatic and simple, but implies the end user is a human not a server)
or
5. FTP or dropbox etc the report (same as #4).
Regards
Bill Shields