text: 
  Starlette includes a `BackgroundTask` class for in-process background tasks.
  
  A background task should be attached to a response, and will run only once
  the response has been sent.
  
  ### Background Task
  
  Used to add a single background task to a response.
  
  Signature: `BackgroundTask(func, *args, **kwargs)`
  
  ```python
  from starlette.applications import Starlette
  from starlette.responses import JSONResponse
  from starlette.routing import Route
  from starlette.background import BackgroundTask
  
  
  ...
  
  async def signup(request):
      data = await request.json()
      username = data['username']
      email = data['email']
      task = BackgroundTask(send_welcome_email, to_address=email)
      message = {'status': 'Signup successful'}
      return JSONResponse(message, background=task)
  
  async def send_welcome_email(to_address):
      ...
  
  
  routes = [
      ...
      Route('/user/signup', endpoint=signup, methods=['POST'])
  ]
  
  app = Starlette(routes=routes)
  ```
  
  ### BackgroundTasks
  
  Used to add multiple background tasks to a response.
  
  Signature: `BackgroundTasks(tasks=[])`
  
  ```python
  from starlette.applications import Starlette
  from starlette.responses import JSONResponse
  from starlette.background import BackgroundTasks
  
  async def signup(request):
      data = await request.json()
      username = data['username']
      email = data['email']
      tasks = BackgroundTasks()
      tasks.add_task(send_welcome_email, to_address=email)
      tasks.add_task(send_admin_notification, username=username)
      message = {'status': 'Signup successful'}
      return JSONResponse(message, background=tasks)
  
  async def send_welcome_email(to_address):
      ...
  
  async def send_admin_notification(username):
      ...
  
  routes = [
      Route('/user/signup', endpoint=signup, methods=['POST'])
  ]
  
  app = Starlette(routes=routes)
  ```
  