Working with Flask and Celery
The integration of Celery with Flask is so simple that no extension is required. A Flask application that uses Celery needs to initialize the Celery client as follows:
<span class="kwd">from</span><span class="pln"> flask </span><span class="kwd">import</span> <span class="typ">Flask</span> <span class="kwd">from</span><span class="pln"> celery </span><span class="kwd">import</span> <span class="typ">Celery</span><span class="pln"> app </span><span class="pun">=</span> <span class="typ">Flask</span><span class="pun">(</span><span class="pln">__name__</span><span class="pun">)</span><span class="pln"> app</span><span class="pun">.</span><span class="pln">config</span><span class="pun">[</span><span class="str">'CELERY_BROKER_URL'</span><span class="pun">]</span> <span class="pun">=</span> <span class="str">'redis://localhost:6379/0'</span><span class="pln"> app</span><span class="pun">.</span><span class="pln">config</span><span class="pun">[</span><span class="str">'CELERY_RESULT_BACKEND'</span><span class="pun">]</span> <span class="pun">=</span> <span class="str">'redis://localhost:6379/0'</span><span class="pln"> celery </span><span class="pun">=</span> <span class="typ">Celery</span><span class="pun">(</span><span class="pln">app</span><span class="pun">.</span><span class="pln">name</span><span class="pun">,</span><span class="pln"> broker</span><span class="pun">=</span><span class="pln">app</span><span class="pun">.</span><span class="pln">config</span><span class="pun">[</span><span class="str">'CELERY_BROKER_URL'</span><span class="pun">])</span><span class="pln"> celery</span><span class="pun">.</span><span class="pln">conf</span><span class="pun">.</span><span class="pln">update</span><span class="pun">(</span><span class="pln">app</span><span class="pun">.</span><span class="pln">config</span><span class="pun">)</span>
As you can see, Celery is initialized by creating an object of class
Celery
, and passing the application name and the connection URL for the message broker, which I put inapp.config
under keyCELERY_BROKER_URL
. This URL tells Celery where the broker service is running. If you run something other than Redis, or have the broker on a different machine, then you will need to change the URL accordingly.
Flask, Celery & SQLAlchemy Example
This video demonstrates how to use Flask, Celery and SQLAlchemy in the same app.
Join my free course on the basics of Flask-SQLAlchemy: https://prettyprinted.com/flasksql
Celery tasks checklist
Useful checklist for building great Celery tasks. Access Github Repo.