mirror of https://github.com/encode/starlette.git
30 lines
801 B
Markdown
30 lines
801 B
Markdown
|
|
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
|
|
|
|
Signature: `BackgroundTask(func, *args, **kwargs)`
|
|
|
|
```python
|
|
from starlette.applications import Starlette
|
|
from starlette.responses import JSONResponse
|
|
from starlette.background import BackgroundTask
|
|
|
|
app = Starlette()
|
|
|
|
@app.route('/user/signup', methods=['POST'])
|
|
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):
|
|
...
|
|
```
|