SlideShare a Scribd company logo
1 of 39
Download to read offline
AIO…WHATEVER
asyncio pour tout le monde
EN 2012…
Guido (et d’autres) commencent à
travailler sur tulip
NODE.JS
Let’s get shit done
EN 2014
python 3.4 sort avec asyncio
NODE.JS
Let’s get shit done
EN 2015…
sortie de python 3.5 avec async/await
MAIS EN FAIT…
PROGRAMMATION ASYNCHRONE
PROGRAMMATION SYNCHRONE
Temps
Ligne
PROGRAMMATION ASYNCHRONE
Temps
Ligne
SOLUTION?
• Threads
ET POUR LES HUMAINS?
• Thread pools
• Green threads
• Events
• Callbacks
• Futures / Promises
• Coroutines ➡ asyncio
AIO-LIBS
bibliothèques utilisant le standard
AIOHTTP CLIENT
import requests
URL = 'http://echo.jsontest.com/key/value/one/two'
def call(url):
resp = requests.get(url)
print(resp.status_code)
print(resp.json())
if __name__ == '__main__':
call(URL)
import asyncio
import aiohttp
URL = 'http://echo.jsontest.com/key/value/one/two'
async def call(url):
async with aiohttp.get(url) as resp:
print(resp.status)
print(await resp.json())
if __name__ == '__main__':
asyncio.get_event_loop().run_until_complete(call(URL))
import requests
from concurrent.futures import ThreadPoolExecutor
URLS = [
'http://echo.jsontest.com/key/value/test/1',
'http://echo.jsontest.com/key/value/test/2',
'http://echo.jsontest.com/key/value/test/3',
'http://echo.jsontest.com/key/value/test/4',
'http://echo.jsontest.com/key/value/test/5',
'http://echo.jsontest.com/key/value/test/6',
]
def call(url):
resp = requests.get(url)
print(resp.status_code)
print(resp.json())
if __name__ == '__main__':
# [call(url) for url in URLS]
executor = ThreadPoolExecutor(max_workers=10)
executor.map(call, URLS)
import aiohttp
import asyncio
URLS = [
'http://echo.jsontest.com/key/value/test/1',
'http://echo.jsontest.com/key/value/test/2',
'http://echo.jsontest.com/key/value/test/3',
'http://echo.jsontest.com/key/value/test/4',
'http://echo.jsontest.com/key/value/test/5',
'http://echo.jsontest.com/key/value/test/6',
]
async def call(url):
async with aiohttp.get(url) as resp:
print(resp.status)
print(await resp.json())
if __name__ == '__main__':
calls = asyncio.wait([call(url) for url in URLS])
asyncio.get_event_loop().run_until_complete(calls)
AIOHTTP SERVEUR
from aiohttp import web
import asyncio
app = web.Application()
async def hello(request):
name = request.match_info.get('name', "Anonymous")
await asyncio.sleep(2)
return web.json_response({
'hello': name,
})
app.router.add_route('GET', '/hello/{name}', hello)
web.run_app(app)
10 REQUÊTES EN PARALLÈLE
• aiohttp: 2 secondes (idem pour 100
requêtes)
• Flask: 20 secondes
OUI MAIS
J’objecte
OUI MAIS 2
le retour de l’objection
LE PROBLÈME
• WatchMeNow sur AppleTV
• Oauth sans webview
• logme.link
🔑?
🔑
🔑, 🔗?
🔗
🔗
🔗
🔑
👍
👍
ARCHITECTURE
• Simple endpoints
• Ajouter des token
• Rediriger
• Longpolling
👍
👍
👍?
ARCHITECTURE
• aiohttp server
• redis pour garder l’état
• redis pub sub pour le longpolling
async def fetch_info(request):
secret = request.match_info.get('secret')
redis_pool = request.app['redis_pool']
redis_sub_pool = request.app['redis_subscribe_pool']
# ... deal with some default cases
async with redis_sub_pool.get() as redis_sub:
channel, = await redis_sub.subscribe(secret)
done, not_done = await asyncio.wait([channel.get(encoding='utf-8')], timeout=30)
await redis_sub.unsubscribe(secret)
async with redis_pool.get() as redis:
info = await _info(redis, secret)
return web.json_response(info)
LES AVANTAGES
• Quelques lignes de Python
• Plusieurs clients peuvent attendre en
parallèle
• Super facile à déployer
ET AUSSI
• aiohttp client
• aiopg, aiozmq, aiomysql…
• websockets
EN RÉSUMÉ
• Beaucoup de IO
• Peu de tâche intenses en CPU
• Les avantage de node.js sans les
inconvénients
• Microservice, backend pour une app (JS
ou native)
QUESTIONS ?

More Related Content

What's hot

Refactorización de aplicaciones PHP/Symfony2
Refactorización de aplicaciones PHP/Symfony2Refactorización de aplicaciones PHP/Symfony2
Refactorización de aplicaciones PHP/Symfony2Raul Fraile
 
GPerf Using Jesque
GPerf Using JesqueGPerf Using Jesque
GPerf Using Jesquectoestreich
 
Nigel hamilton-megameet-2013
Nigel hamilton-megameet-2013Nigel hamilton-megameet-2013
Nigel hamilton-megameet-2013trexy
 
Joy of Six - Discover the Joy of Perl 6
Joy of Six - Discover the Joy of Perl 6Joy of Six - Discover the Joy of Perl 6
Joy of Six - Discover the Joy of Perl 6trexy
 
10 tips for making Bash a sane programming language
10 tips for making Bash a sane programming language10 tips for making Bash a sane programming language
10 tips for making Bash a sane programming languageYaroslav Tkachenko
 
Scaling FastAGI Applications with Go
Scaling FastAGI Applications with GoScaling FastAGI Applications with Go
Scaling FastAGI Applications with GoDigium
 
Automated monitoring with NSClient++ and Icinga
Automated monitoring with NSClient++ and IcingaAutomated monitoring with NSClient++ and Icinga
Automated monitoring with NSClient++ and IcingaMichael Medin
 
Convox introduction by Matt Manning
Convox introduction by Matt ManningConvox introduction by Matt Manning
Convox introduction by Matt Manningjasnow
 
Puppet Camp Düsseldorf 2014: Continuously Deliver Your Puppet Code with Jenki...
Puppet Camp Düsseldorf 2014: Continuously Deliver Your Puppet Code with Jenki...Puppet Camp Düsseldorf 2014: Continuously Deliver Your Puppet Code with Jenki...
Puppet Camp Düsseldorf 2014: Continuously Deliver Your Puppet Code with Jenki...Puppet
 
Jakub Kulhán - ReactPHP + Symfony = PROFIT (1. sraz přátel Symfony v Praze)
Jakub Kulhán - ReactPHP + Symfony = PROFIT (1. sraz přátel Symfony v Praze)Jakub Kulhán - ReactPHP + Symfony = PROFIT (1. sraz přátel Symfony v Praze)
Jakub Kulhán - ReactPHP + Symfony = PROFIT (1. sraz přátel Symfony v Praze)Péhápkaři
 
Open Source Saturday - How can I contribute to Ruby on Rails?
Open Source Saturday - How can I contribute to Ruby on Rails?Open Source Saturday - How can I contribute to Ruby on Rails?
Open Source Saturday - How can I contribute to Ruby on Rails?Pravin Mishra
 
The Puppet Master on the JVM - PuppetConf 2014
The Puppet Master on the JVM - PuppetConf 2014The Puppet Master on the JVM - PuppetConf 2014
The Puppet Master on the JVM - PuppetConf 2014Puppet
 
Python event based network sniffer
Python event based network snifferPython event based network sniffer
Python event based network snifferJirka Vejrazka
 
The journey of asyncio adoption in instagram
The journey of asyncio adoption in instagramThe journey of asyncio adoption in instagram
The journey of asyncio adoption in instagramJimmy Lai
 

What's hot (19)

Refactorización de aplicaciones PHP/Symfony2
Refactorización de aplicaciones PHP/Symfony2Refactorización de aplicaciones PHP/Symfony2
Refactorización de aplicaciones PHP/Symfony2
 
GPerf Using Jesque
GPerf Using JesqueGPerf Using Jesque
GPerf Using Jesque
 
Nigel hamilton-megameet-2013
Nigel hamilton-megameet-2013Nigel hamilton-megameet-2013
Nigel hamilton-megameet-2013
 
Joy of Six - Discover the Joy of Perl 6
Joy of Six - Discover the Joy of Perl 6Joy of Six - Discover the Joy of Perl 6
Joy of Six - Discover the Joy of Perl 6
 
10 tips for making Bash a sane programming language
10 tips for making Bash a sane programming language10 tips for making Bash a sane programming language
10 tips for making Bash a sane programming language
 
Stop js-1999
Stop js-1999Stop js-1999
Stop js-1999
 
Scaling FastAGI Applications with Go
Scaling FastAGI Applications with GoScaling FastAGI Applications with Go
Scaling FastAGI Applications with Go
 
Elixir on Containers
Elixir on ContainersElixir on Containers
Elixir on Containers
 
Automated monitoring with NSClient++ and Icinga
Automated monitoring with NSClient++ and IcingaAutomated monitoring with NSClient++ and Icinga
Automated monitoring with NSClient++ and Icinga
 
Convox introduction by Matt Manning
Convox introduction by Matt ManningConvox introduction by Matt Manning
Convox introduction by Matt Manning
 
Fun with Ruby and Cocoa
Fun with Ruby and CocoaFun with Ruby and Cocoa
Fun with Ruby and Cocoa
 
Puppet Camp Düsseldorf 2014: Continuously Deliver Your Puppet Code with Jenki...
Puppet Camp Düsseldorf 2014: Continuously Deliver Your Puppet Code with Jenki...Puppet Camp Düsseldorf 2014: Continuously Deliver Your Puppet Code with Jenki...
Puppet Camp Düsseldorf 2014: Continuously Deliver Your Puppet Code with Jenki...
 
Virthualenvwrapper
VirthualenvwrapperVirthualenvwrapper
Virthualenvwrapper
 
Jakub Kulhán - ReactPHP + Symfony = PROFIT (1. sraz přátel Symfony v Praze)
Jakub Kulhán - ReactPHP + Symfony = PROFIT (1. sraz přátel Symfony v Praze)Jakub Kulhán - ReactPHP + Symfony = PROFIT (1. sraz přátel Symfony v Praze)
Jakub Kulhán - ReactPHP + Symfony = PROFIT (1. sraz přátel Symfony v Praze)
 
Open Source Saturday - How can I contribute to Ruby on Rails?
Open Source Saturday - How can I contribute to Ruby on Rails?Open Source Saturday - How can I contribute to Ruby on Rails?
Open Source Saturday - How can I contribute to Ruby on Rails?
 
The Puppet Master on the JVM - PuppetConf 2014
The Puppet Master on the JVM - PuppetConf 2014The Puppet Master on the JVM - PuppetConf 2014
The Puppet Master on the JVM - PuppetConf 2014
 
Python event based network sniffer
Python event based network snifferPython event based network sniffer
Python event based network sniffer
 
The journey of asyncio adoption in instagram
The journey of asyncio adoption in instagramThe journey of asyncio adoption in instagram
The journey of asyncio adoption in instagram
 
Actor systems
Actor systemsActor systems
Actor systems
 

Viewers also liked

Plano Valencia Ignacio Luque
Plano Valencia Ignacio LuquePlano Valencia Ignacio Luque
Plano Valencia Ignacio LuqueColegio Almedina
 
Pruthvi's Foods Private Limited, Gujarat , Potato Starch
Pruthvi's Foods Private Limited, Gujarat , Potato StarchPruthvi's Foods Private Limited, Gujarat , Potato Starch
Pruthvi's Foods Private Limited, Gujarat , Potato StarchIndiaMART InterMESH Limited
 
Creating an Effective Learning Environment
Creating an Effective Learning Environment Creating an Effective Learning Environment
Creating an Effective Learning Environment Courtney Pittman, M.Ed.
 
Tadbik group presentation dbm
Tadbik group presentation dbmTadbik group presentation dbm
Tadbik group presentation dbmTadbikgroup
 
香港六合彩
香港六合彩香港六合彩
香港六合彩usbpan
 
Referens: Falck 2011
Referens: Falck 2011Referens: Falck 2011
Referens: Falck 2011Taiga
 
2016-07-07_Rexonic Energy Services Presentation
2016-07-07_Rexonic Energy Services Presentation2016-07-07_Rexonic Energy Services Presentation
2016-07-07_Rexonic Energy Services PresentationRidge Tullos
 
香港六合彩
香港六合彩香港六合彩
香港六合彩usbpan
 
期貨籌碼表0530
期貨籌碼表0530期貨籌碼表0530
期貨籌碼表0530tsu0716
 
Value Added References_David M. Lowry
Value Added References_David M. LowryValue Added References_David M. Lowry
Value Added References_David M. Lowrylowrydavid
 
MoDELS'16 presentation: Integration of a Graph-Based Model Indexer in Commerc...
MoDELS'16 presentation: Integration of a Graph-Based Model Indexer in Commerc...MoDELS'16 presentation: Integration of a Graph-Based Model Indexer in Commerc...
MoDELS'16 presentation: Integration of a Graph-Based Model Indexer in Commerc...Antonio García-Domínguez
 
Short presentation tadbik labels
Short presentation tadbik labelsShort presentation tadbik labels
Short presentation tadbik labelsTadbikgroup
 
Como começa a pesquisa de um artigo científico
Como começa a pesquisa de um artigo científicoComo começa a pesquisa de um artigo científico
Como começa a pesquisa de um artigo científicoUSP e Plexus
 
El verbo ser y los adjetivos
El verbo ser y los adjetivosEl verbo ser y los adjetivos
El verbo ser y los adjetivosSeema Sumod
 
Martin Klebert (Grupo1)
Martin Klebert (Grupo1)Martin Klebert (Grupo1)
Martin Klebert (Grupo1)Haeidegger
 
Dyeing, printing & processing defects
Dyeing, printing & processing defectsDyeing, printing & processing defects
Dyeing, printing & processing defectsRajeev Sharan
 

Viewers also liked (19)

ID Community of Practice
ID Community of PracticeID Community of Practice
ID Community of Practice
 
Plano Valencia Ignacio Luque
Plano Valencia Ignacio LuquePlano Valencia Ignacio Luque
Plano Valencia Ignacio Luque
 
Pruthvi's Foods Private Limited, Gujarat , Potato Starch
Pruthvi's Foods Private Limited, Gujarat , Potato StarchPruthvi's Foods Private Limited, Gujarat , Potato Starch
Pruthvi's Foods Private Limited, Gujarat , Potato Starch
 
Creating an Effective Learning Environment
Creating an Effective Learning Environment Creating an Effective Learning Environment
Creating an Effective Learning Environment
 
Tadbik group presentation dbm
Tadbik group presentation dbmTadbik group presentation dbm
Tadbik group presentation dbm
 
香港六合彩
香港六合彩香港六合彩
香港六合彩
 
Referens: Falck 2011
Referens: Falck 2011Referens: Falck 2011
Referens: Falck 2011
 
2016-07-07_Rexonic Energy Services Presentation
2016-07-07_Rexonic Energy Services Presentation2016-07-07_Rexonic Energy Services Presentation
2016-07-07_Rexonic Energy Services Presentation
 
香港六合彩
香港六合彩香港六合彩
香港六合彩
 
期貨籌碼表0530
期貨籌碼表0530期貨籌碼表0530
期貨籌碼表0530
 
Value Added References_David M. Lowry
Value Added References_David M. LowryValue Added References_David M. Lowry
Value Added References_David M. Lowry
 
MoDELS'16 presentation: Integration of a Graph-Based Model Indexer in Commerc...
MoDELS'16 presentation: Integration of a Graph-Based Model Indexer in Commerc...MoDELS'16 presentation: Integration of a Graph-Based Model Indexer in Commerc...
MoDELS'16 presentation: Integration of a Graph-Based Model Indexer in Commerc...
 
title
titletitle
title
 
Short presentation tadbik labels
Short presentation tadbik labelsShort presentation tadbik labels
Short presentation tadbik labels
 
Como começa a pesquisa de um artigo científico
Como começa a pesquisa de um artigo científicoComo começa a pesquisa de um artigo científico
Como começa a pesquisa de um artigo científico
 
El verbo ser y los adjetivos
El verbo ser y los adjetivosEl verbo ser y los adjetivos
El verbo ser y los adjetivos
 
Mistagogia
MistagogiaMistagogia
Mistagogia
 
Martin Klebert (Grupo1)
Martin Klebert (Grupo1)Martin Klebert (Grupo1)
Martin Klebert (Grupo1)
 
Dyeing, printing & processing defects
Dyeing, printing & processing defectsDyeing, printing & processing defects
Dyeing, printing & processing defects
 

Similar to Aio...whatever

Plack perl superglue for web frameworks and servers
Plack perl superglue for web frameworks and serversPlack perl superglue for web frameworks and servers
Plack perl superglue for web frameworks and serversTatsuhiko Miyagawa
 
Psgi Plack Sfpm
Psgi Plack SfpmPsgi Plack Sfpm
Psgi Plack Sfpmsom_nangia
 
Psgi Plack Sfpm
Psgi Plack SfpmPsgi Plack Sfpm
Psgi Plack Sfpmwilburlo
 
An opinionated intro to Node.js - devrupt hospitality hackathon
An opinionated intro to Node.js - devrupt hospitality hackathonAn opinionated intro to Node.js - devrupt hospitality hackathon
An opinionated intro to Node.js - devrupt hospitality hackathonLuciano Mammino
 
All a flutter about Flutter.io
All a flutter about Flutter.ioAll a flutter about Flutter.io
All a flutter about Flutter.ioSteven Cooper
 
asyncio community, one year later
asyncio community, one year laterasyncio community, one year later
asyncio community, one year laterVictor Stinner
 
FrenchKit 2017: Server(less) Swift
FrenchKit 2017: Server(less) SwiftFrenchKit 2017: Server(less) Swift
FrenchKit 2017: Server(less) SwiftChris Bailey
 
fog or: How I Learned to Stop Worrying and Love the Cloud
fog or: How I Learned to Stop Worrying and Love the Cloudfog or: How I Learned to Stop Worrying and Love the Cloud
fog or: How I Learned to Stop Worrying and Love the CloudWesley Beary
 
Fast, concurrent ruby web applications with EventMachine and EM::Synchrony
Fast, concurrent ruby web applications with EventMachine and EM::SynchronyFast, concurrent ruby web applications with EventMachine and EM::Synchrony
Fast, concurrent ruby web applications with EventMachine and EM::SynchronyKyle Drake
 
Mobile Development integration tests
Mobile Development integration testsMobile Development integration tests
Mobile Development integration testsKenneth Poon
 
fog or: How I Learned to Stop Worrying and Love the Cloud (OpenStack Edition)
fog or: How I Learned to Stop Worrying and Love the Cloud (OpenStack Edition)fog or: How I Learned to Stop Worrying and Love the Cloud (OpenStack Edition)
fog or: How I Learned to Stop Worrying and Love the Cloud (OpenStack Edition)Wesley Beary
 
Python Flask app deployed to OPenShift using Wercker CI
Python Flask app deployed to OPenShift using Wercker CIPython Flask app deployed to OPenShift using Wercker CI
Python Flask app deployed to OPenShift using Wercker CIBruno Rocha
 

Similar to Aio...whatever (20)

Plack - LPW 2009
Plack - LPW 2009Plack - LPW 2009
Plack - LPW 2009
 
Plack perl superglue for web frameworks and servers
Plack perl superglue for web frameworks and serversPlack perl superglue for web frameworks and servers
Plack perl superglue for web frameworks and servers
 
Python, do you even async?
Python, do you even async?Python, do you even async?
Python, do you even async?
 
Intro to PSGI and Plack
Intro to PSGI and PlackIntro to PSGI and Plack
Intro to PSGI and Plack
 
Psgi Plack Sfpm
Psgi Plack SfpmPsgi Plack Sfpm
Psgi Plack Sfpm
 
Psgi Plack Sfpm
Psgi Plack SfpmPsgi Plack Sfpm
Psgi Plack Sfpm
 
Introdution to Node.js
Introdution to Node.jsIntrodution to Node.js
Introdution to Node.js
 
PSGI/Plack OSDC.TW
PSGI/Plack OSDC.TWPSGI/Plack OSDC.TW
PSGI/Plack OSDC.TW
 
An opinionated intro to Node.js - devrupt hospitality hackathon
An opinionated intro to Node.js - devrupt hospitality hackathonAn opinionated intro to Node.js - devrupt hospitality hackathon
An opinionated intro to Node.js - devrupt hospitality hackathon
 
All a flutter about Flutter.io
All a flutter about Flutter.ioAll a flutter about Flutter.io
All a flutter about Flutter.io
 
Plack at YAPC::NA 2010
Plack at YAPC::NA 2010Plack at YAPC::NA 2010
Plack at YAPC::NA 2010
 
asyncio community, one year later
asyncio community, one year laterasyncio community, one year later
asyncio community, one year later
 
How do event loops work in Python?
How do event loops work in Python?How do event loops work in Python?
How do event loops work in Python?
 
FrenchKit 2017: Server(less) Swift
FrenchKit 2017: Server(less) SwiftFrenchKit 2017: Server(less) Swift
FrenchKit 2017: Server(less) Swift
 
aiohttp intro
aiohttp introaiohttp intro
aiohttp intro
 
fog or: How I Learned to Stop Worrying and Love the Cloud
fog or: How I Learned to Stop Worrying and Love the Cloudfog or: How I Learned to Stop Worrying and Love the Cloud
fog or: How I Learned to Stop Worrying and Love the Cloud
 
Fast, concurrent ruby web applications with EventMachine and EM::Synchrony
Fast, concurrent ruby web applications with EventMachine and EM::SynchronyFast, concurrent ruby web applications with EventMachine and EM::Synchrony
Fast, concurrent ruby web applications with EventMachine and EM::Synchrony
 
Mobile Development integration tests
Mobile Development integration testsMobile Development integration tests
Mobile Development integration tests
 
fog or: How I Learned to Stop Worrying and Love the Cloud (OpenStack Edition)
fog or: How I Learned to Stop Worrying and Love the Cloud (OpenStack Edition)fog or: How I Learned to Stop Worrying and Love the Cloud (OpenStack Edition)
fog or: How I Learned to Stop Worrying and Love the Cloud (OpenStack Edition)
 
Python Flask app deployed to OPenShift using Wercker CI
Python Flask app deployed to OPenShift using Wercker CIPython Flask app deployed to OPenShift using Wercker CI
Python Flask app deployed to OPenShift using Wercker CI
 

Recently uploaded

定制(AUT毕业证书)新西兰奥克兰理工大学毕业证成绩单原版一比一
定制(AUT毕业证书)新西兰奥克兰理工大学毕业证成绩单原版一比一定制(AUT毕业证书)新西兰奥克兰理工大学毕业证成绩单原版一比一
定制(AUT毕业证书)新西兰奥克兰理工大学毕业证成绩单原版一比一Fs
 
定制(UAL学位证)英国伦敦艺术大学毕业证成绩单原版一比一
定制(UAL学位证)英国伦敦艺术大学毕业证成绩单原版一比一定制(UAL学位证)英国伦敦艺术大学毕业证成绩单原版一比一
定制(UAL学位证)英国伦敦艺术大学毕业证成绩单原版一比一Fs
 
AlbaniaDreamin24 - How to easily use an API with Flows
AlbaniaDreamin24 - How to easily use an API with FlowsAlbaniaDreamin24 - How to easily use an API with Flows
AlbaniaDreamin24 - How to easily use an API with FlowsThierry TROUIN ☁
 
Russian Call Girls in Kolkata Ishita 🤌 8250192130 🚀 Vip Call Girls Kolkata
Russian Call Girls in Kolkata Ishita 🤌  8250192130 🚀 Vip Call Girls KolkataRussian Call Girls in Kolkata Ishita 🤌  8250192130 🚀 Vip Call Girls Kolkata
Russian Call Girls in Kolkata Ishita 🤌 8250192130 🚀 Vip Call Girls Kolkataanamikaraghav4
 
Sushant Golf City / best call girls in Lucknow | Service-oriented sexy call g...
Sushant Golf City / best call girls in Lucknow | Service-oriented sexy call g...Sushant Golf City / best call girls in Lucknow | Service-oriented sexy call g...
Sushant Golf City / best call girls in Lucknow | Service-oriented sexy call g...akbard9823
 
Complet Documnetation for Smart Assistant Application for Disabled Person
Complet Documnetation   for Smart Assistant Application for Disabled PersonComplet Documnetation   for Smart Assistant Application for Disabled Person
Complet Documnetation for Smart Assistant Application for Disabled Personfurqan222004
 
A Good Girl's Guide to Murder (A Good Girl's Guide to Murder, #1)
A Good Girl's Guide to Murder (A Good Girl's Guide to Murder, #1)A Good Girl's Guide to Murder (A Good Girl's Guide to Murder, #1)
A Good Girl's Guide to Murder (A Good Girl's Guide to Murder, #1)Christopher H Felton
 
Russian Call Girls in Kolkata Samaira 🤌 8250192130 🚀 Vip Call Girls Kolkata
Russian Call Girls in Kolkata Samaira 🤌  8250192130 🚀 Vip Call Girls KolkataRussian Call Girls in Kolkata Samaira 🤌  8250192130 🚀 Vip Call Girls Kolkata
Russian Call Girls in Kolkata Samaira 🤌 8250192130 🚀 Vip Call Girls Kolkataanamikaraghav4
 
定制(Management毕业证书)新加坡管理大学毕业证成绩单原版一比一
定制(Management毕业证书)新加坡管理大学毕业证成绩单原版一比一定制(Management毕业证书)新加坡管理大学毕业证成绩单原版一比一
定制(Management毕业证书)新加坡管理大学毕业证成绩单原版一比一Fs
 
Chennai Call Girls Alwarpet Phone 🍆 8250192130 👅 celebrity escorts service
Chennai Call Girls Alwarpet Phone 🍆 8250192130 👅 celebrity escorts serviceChennai Call Girls Alwarpet Phone 🍆 8250192130 👅 celebrity escorts service
Chennai Call Girls Alwarpet Phone 🍆 8250192130 👅 celebrity escorts servicevipmodelshub1
 
Call Girls in Uttam Nagar Delhi 💯Call Us 🔝8264348440🔝
Call Girls in Uttam Nagar Delhi 💯Call Us 🔝8264348440🔝Call Girls in Uttam Nagar Delhi 💯Call Us 🔝8264348440🔝
Call Girls in Uttam Nagar Delhi 💯Call Us 🔝8264348440🔝soniya singh
 
办理(UofR毕业证书)罗切斯特大学毕业证成绩单原版一比一
办理(UofR毕业证书)罗切斯特大学毕业证成绩单原版一比一办理(UofR毕业证书)罗切斯特大学毕业证成绩单原版一比一
办理(UofR毕业证书)罗切斯特大学毕业证成绩单原版一比一z xss
 
VIP Kolkata Call Girl Salt Lake 👉 8250192130 Available With Room
VIP Kolkata Call Girl Salt Lake 👉 8250192130  Available With RoomVIP Kolkata Call Girl Salt Lake 👉 8250192130  Available With Room
VIP Kolkata Call Girl Salt Lake 👉 8250192130 Available With Roomishabajaj13
 
VIP Kolkata Call Girl Alambazar 👉 8250192130 Available With Room
VIP Kolkata Call Girl Alambazar 👉 8250192130  Available With RoomVIP Kolkata Call Girl Alambazar 👉 8250192130  Available With Room
VIP Kolkata Call Girl Alambazar 👉 8250192130 Available With Roomdivyansh0kumar0
 
VIP Kolkata Call Girl Dum Dum 👉 8250192130 Available With Room
VIP Kolkata Call Girl Dum Dum 👉 8250192130  Available With RoomVIP Kolkata Call Girl Dum Dum 👉 8250192130  Available With Room
VIP Kolkata Call Girl Dum Dum 👉 8250192130 Available With Roomdivyansh0kumar0
 
Contact Rya Baby for Call Girls New Delhi
Contact Rya Baby for Call Girls New DelhiContact Rya Baby for Call Girls New Delhi
Contact Rya Baby for Call Girls New Delhimiss dipika
 
The Intriguing World of CDR Analysis by Police: What You Need to Know.pdf
The Intriguing World of CDR Analysis by Police: What You Need to Know.pdfThe Intriguing World of CDR Analysis by Police: What You Need to Know.pdf
The Intriguing World of CDR Analysis by Police: What You Need to Know.pdfMilind Agarwal
 

Recently uploaded (20)

定制(AUT毕业证书)新西兰奥克兰理工大学毕业证成绩单原版一比一
定制(AUT毕业证书)新西兰奥克兰理工大学毕业证成绩单原版一比一定制(AUT毕业证书)新西兰奥克兰理工大学毕业证成绩单原版一比一
定制(AUT毕业证书)新西兰奥克兰理工大学毕业证成绩单原版一比一
 
定制(UAL学位证)英国伦敦艺术大学毕业证成绩单原版一比一
定制(UAL学位证)英国伦敦艺术大学毕业证成绩单原版一比一定制(UAL学位证)英国伦敦艺术大学毕业证成绩单原版一比一
定制(UAL学位证)英国伦敦艺术大学毕业证成绩单原版一比一
 
AlbaniaDreamin24 - How to easily use an API with Flows
AlbaniaDreamin24 - How to easily use an API with FlowsAlbaniaDreamin24 - How to easily use an API with Flows
AlbaniaDreamin24 - How to easily use an API with Flows
 
Russian Call Girls in Kolkata Ishita 🤌 8250192130 🚀 Vip Call Girls Kolkata
Russian Call Girls in Kolkata Ishita 🤌  8250192130 🚀 Vip Call Girls KolkataRussian Call Girls in Kolkata Ishita 🤌  8250192130 🚀 Vip Call Girls Kolkata
Russian Call Girls in Kolkata Ishita 🤌 8250192130 🚀 Vip Call Girls Kolkata
 
Sushant Golf City / best call girls in Lucknow | Service-oriented sexy call g...
Sushant Golf City / best call girls in Lucknow | Service-oriented sexy call g...Sushant Golf City / best call girls in Lucknow | Service-oriented sexy call g...
Sushant Golf City / best call girls in Lucknow | Service-oriented sexy call g...
 
Complet Documnetation for Smart Assistant Application for Disabled Person
Complet Documnetation   for Smart Assistant Application for Disabled PersonComplet Documnetation   for Smart Assistant Application for Disabled Person
Complet Documnetation for Smart Assistant Application for Disabled Person
 
young call girls in Uttam Nagar🔝 9953056974 🔝 Delhi escort Service
young call girls in Uttam Nagar🔝 9953056974 🔝 Delhi escort Serviceyoung call girls in Uttam Nagar🔝 9953056974 🔝 Delhi escort Service
young call girls in Uttam Nagar🔝 9953056974 🔝 Delhi escort Service
 
A Good Girl's Guide to Murder (A Good Girl's Guide to Murder, #1)
A Good Girl's Guide to Murder (A Good Girl's Guide to Murder, #1)A Good Girl's Guide to Murder (A Good Girl's Guide to Murder, #1)
A Good Girl's Guide to Murder (A Good Girl's Guide to Murder, #1)
 
Russian Call Girls in Kolkata Samaira 🤌 8250192130 🚀 Vip Call Girls Kolkata
Russian Call Girls in Kolkata Samaira 🤌  8250192130 🚀 Vip Call Girls KolkataRussian Call Girls in Kolkata Samaira 🤌  8250192130 🚀 Vip Call Girls Kolkata
Russian Call Girls in Kolkata Samaira 🤌 8250192130 🚀 Vip Call Girls Kolkata
 
定制(Management毕业证书)新加坡管理大学毕业证成绩单原版一比一
定制(Management毕业证书)新加坡管理大学毕业证成绩单原版一比一定制(Management毕业证书)新加坡管理大学毕业证成绩单原版一比一
定制(Management毕业证书)新加坡管理大学毕业证成绩单原版一比一
 
Chennai Call Girls Alwarpet Phone 🍆 8250192130 👅 celebrity escorts service
Chennai Call Girls Alwarpet Phone 🍆 8250192130 👅 celebrity escorts serviceChennai Call Girls Alwarpet Phone 🍆 8250192130 👅 celebrity escorts service
Chennai Call Girls Alwarpet Phone 🍆 8250192130 👅 celebrity escorts service
 
Call Girls in Uttam Nagar Delhi 💯Call Us 🔝8264348440🔝
Call Girls in Uttam Nagar Delhi 💯Call Us 🔝8264348440🔝Call Girls in Uttam Nagar Delhi 💯Call Us 🔝8264348440🔝
Call Girls in Uttam Nagar Delhi 💯Call Us 🔝8264348440🔝
 
办理(UofR毕业证书)罗切斯特大学毕业证成绩单原版一比一
办理(UofR毕业证书)罗切斯特大学毕业证成绩单原版一比一办理(UofR毕业证书)罗切斯特大学毕业证成绩单原版一比一
办理(UofR毕业证书)罗切斯特大学毕业证成绩单原版一比一
 
VIP Kolkata Call Girl Salt Lake 👉 8250192130 Available With Room
VIP Kolkata Call Girl Salt Lake 👉 8250192130  Available With RoomVIP Kolkata Call Girl Salt Lake 👉 8250192130  Available With Room
VIP Kolkata Call Girl Salt Lake 👉 8250192130 Available With Room
 
VIP Kolkata Call Girl Alambazar 👉 8250192130 Available With Room
VIP Kolkata Call Girl Alambazar 👉 8250192130  Available With RoomVIP Kolkata Call Girl Alambazar 👉 8250192130  Available With Room
VIP Kolkata Call Girl Alambazar 👉 8250192130 Available With Room
 
VIP Kolkata Call Girl Dum Dum 👉 8250192130 Available With Room
VIP Kolkata Call Girl Dum Dum 👉 8250192130  Available With RoomVIP Kolkata Call Girl Dum Dum 👉 8250192130  Available With Room
VIP Kolkata Call Girl Dum Dum 👉 8250192130 Available With Room
 
Model Call Girl in Jamuna Vihar Delhi reach out to us at 🔝9953056974🔝
Model Call Girl in  Jamuna Vihar Delhi reach out to us at 🔝9953056974🔝Model Call Girl in  Jamuna Vihar Delhi reach out to us at 🔝9953056974🔝
Model Call Girl in Jamuna Vihar Delhi reach out to us at 🔝9953056974🔝
 
Hot Sexy call girls in Rk Puram 🔝 9953056974 🔝 Delhi escort Service
Hot Sexy call girls in  Rk Puram 🔝 9953056974 🔝 Delhi escort ServiceHot Sexy call girls in  Rk Puram 🔝 9953056974 🔝 Delhi escort Service
Hot Sexy call girls in Rk Puram 🔝 9953056974 🔝 Delhi escort Service
 
Contact Rya Baby for Call Girls New Delhi
Contact Rya Baby for Call Girls New DelhiContact Rya Baby for Call Girls New Delhi
Contact Rya Baby for Call Girls New Delhi
 
The Intriguing World of CDR Analysis by Police: What You Need to Know.pdf
The Intriguing World of CDR Analysis by Police: What You Need to Know.pdfThe Intriguing World of CDR Analysis by Police: What You Need to Know.pdf
The Intriguing World of CDR Analysis by Police: What You Need to Know.pdf
 

Aio...whatever