Processing the file might take seconds or more. So instead of processing the file in the view, you schedule the processing job and return html output to the user "we are processing your request".
Eventually, the scheduled job will complete, and the result will be available to the user.
Celery seems to try to distinguish itself from other job queues by supporting multiple worker servers with a single queue, and concentrating on real-time processing.
I've used it on a few apps for when we have to send out emails. Maybe I'm doing it wrong, but any page that sent out an email always lagged a bit, this cleared out that delay for the user on their end and processed the email in the queue. Works great