Skip to content

Instantly share code, notes, and snippets.

@blackrez
Created December 18, 2018 20:41
Show Gist options
  • Save blackrez/5dea16a18edfee82c1bf03d1ff26c008 to your computer and use it in GitHub Desktop.
Save blackrez/5dea16a18edfee82c1bf03d1ff26c008 to your computer and use it in GitHub Desktop.
Demo for starlette http request in background
from starlette.applications import Starlette
from starlette.responses import JSONResponse
from starlette.background import BackgroundTask
import uvicorn
import asyncio
import aiohttp
import requests
app = Starlette()
@app.route('/a', methods=['GET'])
async def signup(request):
#data = await request.json()
url = 'https://api.github.com/events'
task = BackgroundTask(get_async, site=url)
message = {'status': 'ok'}
return JSONResponse(message, background=task)
async def get_async(site):
async with aiohttp.ClientSession() as session:
async with session.get(site) as resp:
print(resp)
data = await resp.text()
print(data)
print('done')
@app.route('/r', methods=['GET'])
async def signup(request):
#data = await request.json()
url = 'https://api.github.com/events'
task = BackgroundTask(get_request, site=url)
message = {'status': 'ok'}
return JSONResponse(message, background=task)
async def get_request(site):
r = requests.get('https://api.github.com/events')
data = r.text
print(data)
print('done')
if __name__ == '__main__':
uvicorn.run(app, host='0.0.0.0', port=8000)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment