My problem with this (and similar projects) is that there actually <i>is</i> a dependency: Running the worker!<p>This may look like a small thing but in a production environment this means that instead of running 1 thing for your django app (a gunicorn or uwsgi app server) you need to add another thing (the worker). This results to<p>* Monitoring the worker (getting alerts when the worker stops, make sure it runs etc)
* Start the worker when your server starts
* Re-start the worker when you deploy changes (this is critical and easily missed; your worker won't pick any changes to your app whne you deploy it, if you don't re-start it it will run stale code)
* Make sure you have some kind of logging and exception tracking for the worker<p>All this adds up especially if you need to do it all the time for new apps.<p>So, my ideal async task thingie would be to start an async worker <i>on the fly</i> when there are tasks; the worker will be killed when the task has finished (or stay alive some time to pick any new tasks, whatever). So no plumbing of running a worker indenepdently.<p>My understanding is that although this is trivial in languages like Java, C# or Elixir (and even C), it ain't really possible in python because of how python works!<p>Also, if I am not mistaken, the whole async functionality that python has added and django tries to include does not help on this, i.e even if you use all the async features on django and python you can't do something like create and run an async job without running an extra process (a worker) along with the plumbing that goes with that!<p>Or I am mistaken? I'd really like to be mistaken on that :)