Question

Is it currently possible to run Celery with Redis (within app in Django) on App Platform without managed database for Redis?

Posted December 31, 2020 1.5k views
DjangoRedisDigitalOcean App Platform

I want to schedule a weekly task (i.e. saving numbers in the database) in my Django App using Celery. I found a good tutorial how to use celery with Django: https://medium.com/swlh/python-developers-celery-is-a-must-learn-technology-heres-how-to-get-started-578f5d63fab3

but since there are no tutorials on DO regarding how to use workers, I try to assemble the plan for setting it up by myself.

I successfully build the app using basic components (web service and database) and now I want to add Celery to it, but don’t know how to tackle this problem.

Do I need a Redis managed database for it, or will the worker component be enough to schedule weekly task for Django and Celery?

Thank you for your help.

These answers are provided by our Community. If you find them useful, show some love by clicking the heart. If you run into issues leave a comment, or add your own answer to help others.

×
Submit an Answer
2 answers

Did you ever figure out how to do it? The documentation around workers is severely lacking and I will probably just move to Heroku for this reason

  • Yes, it’s up and running on App Platform.

    When you create managed database with Redis and then install and configure Celery it’s not that hard. You just need to create a worker that you run with a command:

    celery -A app_name worker -l info

    and that’s it.

    I followed this instruction: https://www.merixstudio.com/blog/django-celery-beat/ and it works like a charm.

    One advise though - Celery needs more RAM, so you worker needs to have 1GB at least. With 512mb I wasn’t able to make it run, but after switching to 1GB, everything worked well.

For those coming here later. This still remains an issue as of June 9, 2021.

The solution, though somewhat limited, seems to be to run celery not with the multiprocessing pool, but with a gevent pool. I tried this out and was able to get it running and so far, no issues.

https://www.digitalocean.com/community/questions/app-platform-multiprocessing-python