Slide 49
Slide 49 text
Background Task機能
# import を省略
app = FastAPI()
async def query_dns(name: str, url: str):
name = dns.name.from_text(name)
query = dns.message.make_query(name, dns.rdatatype.A)
await asyncio.sleep(5) # 時間のかかる仮定
msg = dns.query.udp(query, "8.8.8.8")
slack = slackweb.Slack(url)
slack.notify(text=f"Answer for `A` of `{name}`\n```{msg}```")
@app.post("/slash-commands/dig")
async def dig(
bg: BackgroundTasks,
text: str = Form(""),
response_url: str = Form("")
):
# 直接処理せずに、移譲する
bg.add_task(query_dns, text, response_url)
# 空のレスポンスを返せば、まずは何もしない
return Response()