Add examples for Celery with Sanic

Hi all,

I have just started using Sanic recently, and it is very handy and matches my use case of a server.

Right now I need to integrate Sanic with Celery workers (running on a different server) but I couldn’t find any clear documentations about how to use Celery with Sanic. The only thing I found is that @ahopkins mentioned in a few topics about his small server running them.

it would be very nice to have an example / template of Sanic with Celery. Or @ahopkins could you please share the template of your project which uses both Sanic and Celery ?

Thank you in advance.

Sure, I can share some code when I’m back in front of a computer.

But it is nothing unique to Sanic. I am using Redis as a broker. I have a common library that is mounted on both my server and my celery worker. The server initiates the task, and the worker picks it up.

More to come later.

1 Like

from common.tasks import app

from common.tasks import do_task"/start_task")
async def start_task(request):


from celery import Celery
from os import environ

REDIS_URI = environ.get("QUEUE_REDIS_URI")
REDIS_DB = environ.get("QUEUE_REDIS_DB")

app = Celery("tasks", broker=f"redis://{REDIS_URI}:{REDIS_PORT}/{REDIS_DB}")

def run_task(*args, **kwargs):
1 Like

Let me know if this helps get you going. The idea is that the Celery app is inside some common library. To run a celery worker, it is enough to just import it inside your, and then you can run

celery -A worker:app worker --loglevel=info --concurrency=1

Thank you so much for the detailed explanation and the code.

It seems good enough for me to start with.