Slide 1

Slide 1 text

1Z$PO +1 4FQ 1JOF.J[VOF ʰ BTZODJP BJPIUUQ ʱͰ࡞Δɺ΢ΣϒαʔϏε )PXUPEFWFMPQBXFCTFSWJDFXJUIBTZODJP BOEBJPIUUQ

Slide 2

Slide 2 text

  "CPVUNF 8IBUJTBTZODJP )PXUPVTFBJPIUUQ 

Slide 3

Slide 3 text

"CPVU NF QJOF QJOF 8FCNPCJMFBQQFOHJOFFSJO5PLZP IUUQTFNPKJHFOOJOKB &NPKJ(FOFSBUPSUPPMGPS4MBDL BCPVU ."6 XSJUUFOCZ1ZUIPOBJPIUUQ

Slide 4

Slide 4 text

&NPKJ (FOFSBUPS MPWFT 1ZUIPO *NBHFQSPDFTTJOH "QQMJDBUJPOTFSWFS %FW0QT

Slide 5

Slide 5 text

B BTZODJP

Slide 6

Slide 6 text

8IBU JTBTZODJP § "TZODISPOVT *0 FWFOUMPPQ BOEDPSPVUJOFT § TJOHMFUISFBEFE § MJLF+BWB4DSJQU &4 PS3VCZ`T'JCFS § 5IFTUBOEBSEMJCSBSZ 1ZUIPO § BTZOD BXBJU LFZXPSET 1ZUIPO § )JHIQFSGPSNBODFBOEMJHIUXFJHIU § TVJUBCMFGPS*0CPVOEQSPDFTTJOH !

Slide 7

Slide 7 text

&WFOU MPPQ § 3VOEFGBVMUFWFOUMPPQ import asyncio loop = asyncio.get_event_loop() loop.run_forever() § 6TFPUIFSFWFOUMPPQ MJCVW CBDLFOE import asyncio import uvloop asyncio.set_event_loop_policy(uvloop.EventLoopPolicy())

Slide 8

Slide 8 text

&WFOU MPPQ § 3VOEFGBVMUFWFOUMPPQ import asyncio loop = asyncio.get_event_loop() loop.run_forever() § 6TFPUIFSFWFOUMPPQ MJCVW CBDLFOE import asyncio import uvloop asyncio.set_event_loop_policy(uvloop.EventLoopPolicy()) 4UBSUEFGBVMUFWFOUMPPQGPSFWFS

Slide 9

Slide 9 text

&WFOU MPPQ § 3VOEFGBVMUFWFOUMPPQ import asyncio loop = asyncio.get_event_loop() loop.run_forever() § 6TFPUIFSFWFOUMPPQ MJCVW CBDLFOE import asyncio import uvloop asyncio.set_event_loop_policy(uvloop.EventLoopPolicy()) $IBOHFFWFOUMPPQQPMJDZ

Slide 10

Slide 10 text

$PSPVUJOFT § &BTZUPVTFDPSPVUJOFT import asyncio async def run(): await asyncio.sleep(1) coroutine = run() print(coroutine) #=> loop = asyncio.get_event_loop() loop.run_until_complete(coroutine)

Slide 11

Slide 11 text

$PSPVUJOFT § &BTZUPVTFDPSPVUJOFT import asyncio async def run(): await asyncio.sleep(1) coroutine = run() print(coroutine) #=> loop = asyncio.get_event_loop() loop.run_until_complete(coroutine) 6TFBABTZOD EFGATUBUFNFOU

Slide 12

Slide 12 text

$PSPVUJOFT § &BTZUPVTFDPSPVUJOFT import asyncio async def run(): await asyncio.sleep(1) coroutine = run() print(coroutine) #=> loop = asyncio.get_event_loop() loop.run_until_complete(coroutine) $BMMBDPSPVUJOFGVODUJPO

Slide 13

Slide 13 text

$PSPVUJOFT § &BTZUPVTFDPSPVUJOFT import asyncio async def run(): await asyncio.sleep(1) coroutine = run() print(coroutine) #=> loop = asyncio.get_event_loop() loop.run_until_complete(coroutine) 8BJUVOUJMUIFDPSPVUJOFFOET

Slide 14

Slide 14 text

'VUVSFT § .BLF'VUVSF GSPNDPSPVUJOFT improt asyncio async def identity(value): return value future1 = asyncio.ensure_future(identity(1)) future2 = asyncio.ensure_future(identity(2)) future3 = asyncio.gather(future1, future2) loop = asyncio.get_event_loop() print(loop.run_until_complete(future3)) #=> [1, 2]

Slide 15

Slide 15 text

'VUVSFT § .BLF'VUVSF GSPNDPSPVUJOFT improt asyncio async def identity(value): return value future1 = asyncio.ensure_future(identity(1)) future2 = asyncio.ensure_future(identity(2)) future3 = asyncio.gather(future1, future2) loop = asyncio.get_event_loop() print(loop.run_until_complete(future3)) #=> [1, 2] 1SPNJTF %FGGFSFE FUD

Slide 16

Slide 16 text

'VUVSFT § .BLF'VUVSF GSPNDPSPVUJOFT improt asyncio async def identity(value): return value future1 = asyncio.ensure_future(identity(1)) future2 = asyncio.ensure_future(identity(2)) future3 = asyncio.gather(future1, future2) loop = asyncio.get_event_loop() print(loop.run_until_complete(future3)) #=> [1, 2] $PSPVUJOFT'VUVSFT

Slide 17

Slide 17 text

'VUVSFT § .BLF'VUVSF GSPNDPSPVUJOFT improt asyncio async def identity(value): return value future1 = asyncio.ensure_future(identity(1)) future2 = asyncio.ensure_future(identity(2)) future3 = asyncio.gather(future1, future2) loop = asyncio.get_event_loop() print(loop.run_until_complete(future3)) #=> [1, 2] .BLFOFXGVUVSFGSPNUXPGVUVSFT

Slide 18

Slide 18 text

'VUVSFT § .BLF'VUVSF GSPNDPSPVUJOFT improt asyncio async def identity(value): return value future1 = asyncio.ensure_future(identity(1)) future2 = asyncio.ensure_future(identity(2)) future3 = asyncio.gather(future1, future2) loop = asyncio.get_event_loop() print(loop.run_until_complete(future3)) #=> [1, 2] 8BJUVOUJMUIF'VUVSFFOET

Slide 19

Slide 19 text

B BJPIUUQ

Slide 20

Slide 20 text

8IBU JTBJPIUUQ § "TZODISPOPVT)551DMJFOUTFSWFSGSBNFXPSL § BTZODJP CBTFE § 1ZUIPOSFRVJSFE § 4FQ WSFMFBTFE § $VSSFOUMZW § 4VQQPSUT8FC4PDLFU 4FTTJPO $PPLJF FUD  BJPMJCTBJPIUUQ

Slide 21

Slide 21 text

)BOEMFST from aiohttp import web async def items(request): page = request.query.get(‘page’) items = await item_repository.filter(page) return web.json_response(result) app.router.add_get(‘/items’, items) § .7$XFCBQQGSBNFXPSL`T$POUSPMMFS § SFDFJWFSFRVFTU SFUVSOSFTQPOTF

Slide 22

Slide 22 text

)BOEMFST from aiohttp import web async def items(request): page = request.query.get(‘page’) items = await item_repository.filter(page) return web.json_response(result) app.router.add_get(‘/items’, items) § .7$XFCBQQGSBNFXPSL`T$POUSPMMFS § SFDFJWFSFRVFTU SFUVSOSFTQPOTF "TZODISPOPVT%#BDDFTT

Slide 23

Slide 23 text

)BOEMFST from aiohttp import web async def items(request): page = request.query.get(‘page’) items = await item_repository.filter(page) return web.json_response(result) app.router.add_get(‘/items’, items) § .7$XFCBQQGSBNFXPSL`T$POUSPMMFS § SFDFJWFSFRVFTU SFUVSOSFTQPOTF "EEBOFXSPVUFUPUIFEFGBVMU63-SPVUFS

Slide 24

Slide 24 text

)BOEMFST from aiohttp import web routes = web.RouteTableDef() @routes.get(‘/items’) async def items(request): page = request.query.get(‘page’) items = await item_repository.filter(page) return web.json_response(result) § 4VQQPSU'MBTLMJLFSPVUJOHEFGJOJUJPOT

Slide 25

Slide 25 text

.JEEMFXBSFT import htmlmin from aiohttp import web @web.middleware async def htmlmin_middleware(request, handler): response = await handler(request) if response.content_type == 'text/html': response.text = htmlmin.minify(response.text) return response app.middlewares.append(htmlmin_middleware()) § )5.-NJOJGZNJEEMFXBSFTBNQMF

Slide 26

Slide 26 text

.JEEMFXBSFT import htmlmin from aiohttp import web @web.middleware async def htmlmin_middleware(request, handler): response = await handler(request) if response.content_type == 'text/html': response.text = htmlmin.minify(response.text) return response app.middlewares.append(htmlmin_middleware()) § )5.-NJOJGZNJEEMFXBSFTBNQMF *OKFDUBTZODISPOPVTNJEEMFXBSF

Slide 27

Slide 27 text

1SPEVDUJPO § V84(* JTOPUTVQQPSUFE! § OHJOY (VOJDPSO BSFSFDPNNFOEFECZP⒏DJBM § SVOTTFSWFSXJUIDVTUPNXPSLFS FOWJSPONFOUT $ gunicorn myapp:app --bind localhost:8080 --worker-class aiohttp.GunicornWebWorker

Slide 28

Slide 28 text

$PODMVTJPO B § BTZODJP JTBTZODISPOVT *0 FWFOUMPPQBOEDPSPVUJOFTMJCSBSZ § BJPIUUQ JTBTZODJP CBTFEXFCBQQGSBNFXPSL § BJPIUUQ JTTJNQMFBOEDBOCVJMEIJHIQFSGPSNBODFBQQ 5IBOLZPV