If celery is too much, consider django-background-tasks.
To be totally honest, I am an old dog, and I generally do the following:
* Write a management command.
* Deploy a crontab to run my management command.
This is not so container or cloud friendly, but none of my cloud deployments run "long" tasks. So, I've been able to translate this old pattern like this:
* Have a Lambda hit a web URL which runs the management command through django.core.management.call_command (for brief commands)
* Deploy to Lambda using Zappa and have a scheduled event in CloudWatch events run the command.
I think doing this same pattern with AWS Batch would work for longer commands - and only AWS is relevant to me.
Anyway, django-background-tasks or a simple management command are both less to deploy than celery.