Using the app context#

Tasks invocated by Quart-Tasks run within an application context, which means the Quart globals current_app and g are available. This allows for storage on g.

For example a DB connection can be made available within the task using QuartDB,

from datetime import timdelta

from quart import g, Quart
from quart_db import QuartDB
from quart_tasks import QuartTasks

app = Quart(__name__)
quart_db = QuartDB(app)
quart_tasks = QuartTasks(app)

@quart_tasks.before_task
async def setup():
    g.connection = await quart_db.acquire()


@quart_tasks.after_task
async def cleanup():
    await quart_db.release(g.connection)
    g.connection = None

@quart_tasks.periodic(timedelta(seconds=10))
async def frequent_task():
    # It is likely you'll want to do something more useful
    g.connection.execute("SELECT COUNT(*) FROM visits")