I think that the best investment today for any Web developer is to start learning Dart. Why?
As a developer and a university professor, for the first time in my long career, I can do the following with Dart:
I can use Dart both on the client and on the server;
I can apply both object-oriented and functional way of programming;
I can develop in Dart and deploy applications in JavaScript;
I can be a productive developer with many Dart tools and libraries, and get a very good performance in either Dart applications or their JavaScript versions;
I can start developing a prototype without data types and introduce them when I need to convert the prototype to a deployable application;
I can use Dart for both synchronous and asynchronous programming;
I can use many publicly available packages and reuse their libraries;
I can be a web engineer on the client-side and a software engineer on the server-side, with the same language and many reusable libraries.
I do not work at Google and yes, I love Dart. By following Seth's work for two years and a half, it is obvious to me that he loves Dart.
Why do I love Dart? As a developer and a university professor, for the first time in my long career, I can do the following with Dart:
I can use Dart both on the client and on the server;
with Dart, I can apply both object-oriented and functional way of programming.
I can develop in Dart and deploy applications in JavaScript.
I can be a productive developer with many Dart tools and libraries, and get a very good performance in either Dart applications or their JavaScript versions.
I can start developing a prototype without data types and introduce them when I need to convert the prototype to a deployable application.
I can use Dart for both synchronous and asynchronous programming.
I can use many publicly available packages and reuse their libraries.
I can be a web engineer on the client-side and a software engineer on the server-side, with the same language and many reusable libraries.
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