Why does my Celery task not start on Heroku?

I currently have an app deployed on Heroku. I’ve recently added celery with redis. The app works fine on my device but when I try to deploy on Heroku everything works fine up until the Celery task should be called. However nothing happens and I don’t get any error logs from Heroku. Here is my code:

settings.py:


CELERY_BROKER_URL = env('CELERY_BROKER_URL')

CELERY_RESULT_BACKEND = env('CELERY_RESULT_BACKEND')

CELERY_CACHE_BACKEND = "default"

CELERY_ACCEPT_CONTENT = ['json']

CELERY_TASK_SERIALIZER = 'json'

CELERY_RESULT_SERIALIZER = 'json'

CELERY_TIMEZONE = 'UTC'

views.py:

task = transcribe_file_task.delay(file_path, audio_language, output_file_type, 'ai_transcribe_output', session_id)

celery.py:


from __future__ import absolute_import, unicode_literals

import os

from celery import Celery

from django.conf import settings

os.environ.setdefault("DJANGO_SETTINGS_MODULE", "mysite.settings")

app = Celery("mysite")

app.config_from_object("django.conf:settings", namespace="CELERY")

app.autodiscover_tasks()

docker-compose.yml:


services:

web:

environment:

...

* CELERY_BROKER_URL=redis://redis:6379/0
* CELERY_RESULT_BACKEND=redis://redis:6379/0

...

services:

celery:

environment:

...

* CELERY_BROKER_URL=redis://redis:6379/0
* CELERY_RESULT_BACKEND=redis://redis:6379/0

heroku.yml:


setup:

addons:

* plan: heroku-postgresql
* plan: heroku-redis

build:

docker:

web: Dockerfile

celery: Dockerfile

release:

image: web

command:

* python [manage.py](http://manage.py) collectstatic --noinput

run:

web: gunicorn mysite.wsgi

celery: celery -A mysite worker --loglevel=info

requirements.txt:

environs[django]==9.5.0

I don’t use a Procfile.

To set up redis on Heroku I went read the steps in this tutorial and simply followed the url in the ‘Heroku Data for Redis’ line and installed it. Then I committed to Github and ran >heroku git:remote -a <app name> and pushed to Heroku using >git push heroku main.