Thanks for the article, but thereis one huge minus, especially if you have already have legacy code - you must call QuerySet's using() method everywhere you need non default limits. It may lead to rewriting a lot of code. If your project is running in different environments (e.g inside several docker containers) the better way I guess is to separate "running mode" by environmental variable (RUNNING_MODE for example) and set it for every source: RUNNING_MODE=app|celery|cron|... . And get limit time looking on this env variable.
The rest is the same as in article - subscribing on connection_created signal, setting statement_timeout.