SlideShare a Scribd company logo
1 of 15
Download to read offline
COPYRIGHT © 2009–2019 MIRUMEE SOFTWARE
Creating a GraphQL API in Python:
from Django to fully asynchronous
Marcin Gębala & Patryk Zawadzki
DjangoCon Europe 2019
COPYRIGHT © 2009–2019 MIRUMEE SOFTWARE
About us
Marcin Gębala
Python developer @ Mirumee Software,
Lead developer @ Saleor
github.com/maarcingebala
@maarcingebala
Patryk Zawadzki
Head of Technology @ Mirumee
Software, Python developer
github.com/patrys
@patrys
COPYRIGHT © 2009–2019 MIRUMEE SOFTWARE
Agenda
■ Saleor
■ GraphQL - core concepts
■ Workshop
COPYRIGHT © 2009–2019 MIRUMEE SOFTWARE
https://github.com/mirumee/graphql-workshop
COPYRIGHT © 2009–2019 MIRUMEE SOFTWARE
Saleor - open-source e-commerce platform
Backend: Django + GraphQL API (Graphene)
Frontend: TypeScript + Apollo Client + React
github.com/mirumee/saleor
COPYRIGHT © 2009–2019 MIRUMEE SOFTWARE
■ Single endpoint, single request
■ Client defines what data to fetch
■ Strong typing
■ Introspection
■ Queries, mutations, subscriptions
GraphQL - core concepts
COPYRIGHT © 2009–2019 MIRUMEE SOFTWARE
Queries
■ Queries allow fetching data from the server.
■ Each query has a resolver - a function that defines how to fetch the
data from a data source (any).
COPYRIGHT © 2009–2019 MIRUMEE SOFTWARE
Mutations
■ Mutations allow modifying data on the server.
COPYRIGHT © 2009–2019 MIRUMEE SOFTWARE
■ A schema file defines the types
and operations available in the
API.
■ A clear contract between
backend and frontend
■ Easy to find usages of particular
types
Schema
COPYRIGHT © 2009–2019 MIRUMEE SOFTWARE
Ariadne
github.com/mirumee/ariadne
Ariadne is a Python library for implementing
schema-first GraphQL servers that is simple to use
and open for extension.
■ Schema-first approach
■ Inspired by Apollo Server
COPYRIGHT © 2009–2019 MIRUMEE SOFTWARE
https://github.com/mirumee/graphql-workshop
COPYRIGHT © 2009–2019 MIRUMEE SOFTWARE
Intermission: asyncio
COPYRIGHT © 2009–2019 MIRUMEE SOFTWARE
Event loop example from Python’s documentation
COPYRIGHT © 2009–2019 MIRUMEE SOFTWARE
https://github.com/mirumee/graphql-workshop
COPYRIGHT © 2009–2019 MIRUMEE SOFTWARE
THANK YOU!
@maarcingebala
@patrys

More Related Content

What's hot

有 Firebase 就不用找後端工程師了 (誤)
有 Firebase 就不用找後端工程師了 (誤)有 Firebase 就不用找後端工程師了 (誤)
有 Firebase 就不用找後端工程師了 (誤)WANGCHOU LU
 
L'open source m'a tuer*
L'open source m'a tuer*L'open source m'a tuer*
L'open source m'a tuer*sabativi
 
"Developing with .NET Core on AWS", Martin Beeby, AWS Dev Day Kyiv 2019
"Developing with .NET Core on AWS", Martin Beeby, AWS Dev Day Kyiv 2019"Developing with .NET Core on AWS", Martin Beeby, AWS Dev Day Kyiv 2019
"Developing with .NET Core on AWS", Martin Beeby, AWS Dev Day Kyiv 2019Provectus
 
Strapi Conference: Personalised Onboarding with Strapi x Encore
Strapi Conference:  Personalised Onboarding with Strapi x EncoreStrapi Conference:  Personalised Onboarding with Strapi x Encore
Strapi Conference: Personalised Onboarding with Strapi x EncoreMarcus Kohlberg
 
Codemotion Berlin 2017 - Event-driven and serverless applications with IBM Cl...
Codemotion Berlin 2017 - Event-driven and serverless applications with IBM Cl...Codemotion Berlin 2017 - Event-driven and serverless applications with IBM Cl...
Codemotion Berlin 2017 - Event-driven and serverless applications with IBM Cl...Frederic Lavigne
 
Microprofile at IBM with Liberty
Microprofile at IBM with LibertyMicroprofile at IBM with Liberty
Microprofile at IBM with LibertyErin Schnabel
 
Just add Imagination
Just add ImaginationJust add Imagination
Just add ImaginationKNIMESlides
 
How to deploy machine learning models in the Cloud
How to deploy machine learning models in the CloudHow to deploy machine learning models in the Cloud
How to deploy machine learning models in the CloudAlex Casalboni
 
Importance of GCP: 30 Days of GCP
Importance of GCP: 30 Days of GCPImportance of GCP: 30 Days of GCP
Importance of GCP: 30 Days of GCPAnshTyagi27
 
Gitlab CI + GAE Autodeploy
Gitlab CI + GAE AutodeployGitlab CI + GAE Autodeploy
Gitlab CI + GAE AutodeployJan Mikeš
 
From raw data to deployment
From raw data to deployment From raw data to deployment
From raw data to deployment KNIMESlides
 
Automate scalable micro services with Kubernetes on Google Cloud by Billme , ...
Automate scalable micro services with Kubernetes on Google Cloud by Billme , ...Automate scalable micro services with Kubernetes on Google Cloud by Billme , ...
Automate scalable micro services with Kubernetes on Google Cloud by Billme , ...TeK Charnsilp Chinprasert
 
Hari-Prasad Sudharshan [Fujitsu Network Communications] | ML-Based Data-Drive...
Hari-Prasad Sudharshan [Fujitsu Network Communications] | ML-Based Data-Drive...Hari-Prasad Sudharshan [Fujitsu Network Communications] | ML-Based Data-Drive...
Hari-Prasad Sudharshan [Fujitsu Network Communications] | ML-Based Data-Drive...InfluxData
 
Full Matrix Auto Test Framework for WebRTC
Full Matrix Auto Test Framework for WebRTCFull Matrix Auto Test Framework for WebRTC
Full Matrix Auto Test Framework for WebRTCKensaku Komatsu
 
APIdays Paris 2019 - Microservices Architectures Agility vs Complexity, by Pr...
APIdays Paris 2019 - Microservices Architectures Agility vs Complexity, by Pr...APIdays Paris 2019 - Microservices Architectures Agility vs Complexity, by Pr...
APIdays Paris 2019 - Microservices Architectures Agility vs Complexity, by Pr...apidays
 
KNIME Data Science Learnathon: From Raw Data To Deployment
KNIME Data Science Learnathon: From Raw Data To DeploymentKNIME Data Science Learnathon: From Raw Data To Deployment
KNIME Data Science Learnathon: From Raw Data To DeploymentKNIMESlides
 

What's hot (20)

有 Firebase 就不用找後端工程師了 (誤)
有 Firebase 就不用找後端工程師了 (誤)有 Firebase 就不用找後端工程師了 (誤)
有 Firebase 就不用找後端工程師了 (誤)
 
L'open source m'a tuer*
L'open source m'a tuer*L'open source m'a tuer*
L'open source m'a tuer*
 
"Developing with .NET Core on AWS", Martin Beeby, AWS Dev Day Kyiv 2019
"Developing with .NET Core on AWS", Martin Beeby, AWS Dev Day Kyiv 2019"Developing with .NET Core on AWS", Martin Beeby, AWS Dev Day Kyiv 2019
"Developing with .NET Core on AWS", Martin Beeby, AWS Dev Day Kyiv 2019
 
P.I.Z.Z.A.: Status Update
P.I.Z.Z.A.: Status UpdateP.I.Z.Z.A.: Status Update
P.I.Z.Z.A.: Status Update
 
Strapi Conference: Personalised Onboarding with Strapi x Encore
Strapi Conference:  Personalised Onboarding with Strapi x EncoreStrapi Conference:  Personalised Onboarding with Strapi x Encore
Strapi Conference: Personalised Onboarding with Strapi x Encore
 
Codemotion Berlin 2017 - Event-driven and serverless applications with IBM Cl...
Codemotion Berlin 2017 - Event-driven and serverless applications with IBM Cl...Codemotion Berlin 2017 - Event-driven and serverless applications with IBM Cl...
Codemotion Berlin 2017 - Event-driven and serverless applications with IBM Cl...
 
GraphQL, The New Black?
GraphQL, The New Black?GraphQL, The New Black?
GraphQL, The New Black?
 
Microprofile at IBM with Liberty
Microprofile at IBM with LibertyMicroprofile at IBM with Liberty
Microprofile at IBM with Liberty
 
Just add Imagination
Just add ImaginationJust add Imagination
Just add Imagination
 
a pattern for PWA, PRPL
a pattern for PWA, PRPLa pattern for PWA, PRPL
a pattern for PWA, PRPL
 
How to deploy machine learning models in the Cloud
How to deploy machine learning models in the CloudHow to deploy machine learning models in the Cloud
How to deploy machine learning models in the Cloud
 
Importance of GCP: 30 Days of GCP
Importance of GCP: 30 Days of GCPImportance of GCP: 30 Days of GCP
Importance of GCP: 30 Days of GCP
 
Gitlab CI + GAE Autodeploy
Gitlab CI + GAE AutodeployGitlab CI + GAE Autodeploy
Gitlab CI + GAE Autodeploy
 
From raw data to deployment
From raw data to deployment From raw data to deployment
From raw data to deployment
 
Automate scalable micro services with Kubernetes on Google Cloud by Billme , ...
Automate scalable micro services with Kubernetes on Google Cloud by Billme , ...Automate scalable micro services with Kubernetes on Google Cloud by Billme , ...
Automate scalable micro services with Kubernetes on Google Cloud by Billme , ...
 
Hari-Prasad Sudharshan [Fujitsu Network Communications] | ML-Based Data-Drive...
Hari-Prasad Sudharshan [Fujitsu Network Communications] | ML-Based Data-Drive...Hari-Prasad Sudharshan [Fujitsu Network Communications] | ML-Based Data-Drive...
Hari-Prasad Sudharshan [Fujitsu Network Communications] | ML-Based Data-Drive...
 
Full Matrix Auto Test Framework for WebRTC
Full Matrix Auto Test Framework for WebRTCFull Matrix Auto Test Framework for WebRTC
Full Matrix Auto Test Framework for WebRTC
 
CVJan2016-3
CVJan2016-3CVJan2016-3
CVJan2016-3
 
APIdays Paris 2019 - Microservices Architectures Agility vs Complexity, by Pr...
APIdays Paris 2019 - Microservices Architectures Agility vs Complexity, by Pr...APIdays Paris 2019 - Microservices Architectures Agility vs Complexity, by Pr...
APIdays Paris 2019 - Microservices Architectures Agility vs Complexity, by Pr...
 
KNIME Data Science Learnathon: From Raw Data To Deployment
KNIME Data Science Learnathon: From Raw Data To DeploymentKNIME Data Science Learnathon: From Raw Data To Deployment
KNIME Data Science Learnathon: From Raw Data To Deployment
 

Similar to Creating a GraphQL API in Python: from Django to fully asynchronous

APIdays Paris 2019 - Real World Graphene: Lessons Learned from Building a Gra...
APIdays Paris 2019 - Real World Graphene: Lessons Learned from Building a Gra...APIdays Paris 2019 - Real World Graphene: Lessons Learned from Building a Gra...
APIdays Paris 2019 - Real World Graphene: Lessons Learned from Building a Gra...apidays
 
London Oracle Developer Meetup - June 18 - Drones with APIs
London Oracle Developer Meetup - June 18 - Drones with APIsLondon Oracle Developer Meetup - June 18 - Drones with APIs
London Oracle Developer Meetup - June 18 - Drones with APIsPhil Wilkins
 
OSS Tools: Creating a Reverse Engineering Plug-in for r2frida
OSS Tools: Creating a Reverse Engineering Plug-in for r2fridaOSS Tools: Creating a Reverse Engineering Plug-in for r2frida
OSS Tools: Creating a Reverse Engineering Plug-in for r2fridaNowSecure
 
Serverless survival kit
Serverless survival kitServerless survival kit
Serverless survival kitSteve Houël
 
Progressive Web App
Progressive Web AppProgressive Web App
Progressive Web AppLocNguyen362
 
GraphTour 2020 - Practical Applications of Neo4j 4.0
GraphTour 2020 - Practical Applications of Neo4j 4.0GraphTour 2020 - Practical Applications of Neo4j 4.0
GraphTour 2020 - Practical Applications of Neo4j 4.0Neo4j
 
INTERFACE, by apidays - Design and Build Great Web APIs
INTERFACE, by apidays - Design and Build Great Web APIsINTERFACE, by apidays - Design and Build Great Web APIs
INTERFACE, by apidays - Design and Build Great Web APIsapidays
 
Lesson learned from React native and Flutter
Lesson learned from React native and FlutterLesson learned from React native and Flutter
Lesson learned from React native and FlutterSomkiat Puisungnoen
 
Real User Measurement Insights, NYWebPerf 2018-Aug-09
Real User Measurement Insights, NYWebPerf 2018-Aug-09Real User Measurement Insights, NYWebPerf 2018-Aug-09
Real User Measurement Insights, NYWebPerf 2018-Aug-09Paul Calvano
 
Python Programming Essentials - M1 - Course Introduction
Python Programming Essentials - M1 - Course IntroductionPython Programming Essentials - M1 - Course Introduction
Python Programming Essentials - M1 - Course IntroductionP3 InfoTech Solutions Pvt. Ltd.
 
The Sodium crypto library of PHP 7.2 (PHP Day 2018)
The Sodium crypto library of PHP 7.2 (PHP Day 2018)The Sodium crypto library of PHP 7.2 (PHP Day 2018)
The Sodium crypto library of PHP 7.2 (PHP Day 2018)Zend by Rogue Wave Software
 
Building Notebook-based AI Pipelines with Elyra and Kubeflow
Building Notebook-based AI Pipelines with Elyra and KubeflowBuilding Notebook-based AI Pipelines with Elyra and Kubeflow
Building Notebook-based AI Pipelines with Elyra and KubeflowDatabricks
 
UC18NA-D3D202-Dianomic-IZoratti-Introduction-To-FogLAMP.pdf
UC18NA-D3D202-Dianomic-IZoratti-Introduction-To-FogLAMP.pdfUC18NA-D3D202-Dianomic-IZoratti-Introduction-To-FogLAMP.pdf
UC18NA-D3D202-Dianomic-IZoratti-Introduction-To-FogLAMP.pdfWlamir Molinari
 
Meetup 18/10/2018 - Artificiële intelligentie en mobiliteit
Meetup 18/10/2018 - Artificiële intelligentie en mobiliteitMeetup 18/10/2018 - Artificiële intelligentie en mobiliteit
Meetup 18/10/2018 - Artificiële intelligentie en mobiliteitDigipolis Antwerpen
 
Leveraging Splunk Enterprise Security with the MITRE’s ATT&CK Framework
Leveraging Splunk Enterprise Security with the MITRE’s ATT&CK FrameworkLeveraging Splunk Enterprise Security with the MITRE’s ATT&CK Framework
Leveraging Splunk Enterprise Security with the MITRE’s ATT&CK FrameworkSplunk
 
Notebook-based AI Pipelines with Elyra and Kubeflow
Notebook-based AI Pipelines with Elyra and KubeflowNotebook-based AI Pipelines with Elyra and Kubeflow
Notebook-based AI Pipelines with Elyra and KubeflowNick Pentreath
 
apidays LIVE New York - Building Great Web APIs by Mike Amundsen
apidays LIVE New York - Building Great Web APIs by Mike Amundsenapidays LIVE New York - Building Great Web APIs by Mike Amundsen
apidays LIVE New York - Building Great Web APIs by Mike Amundsenapidays
 
The Future of Infrastructure: Key Trends to consider
The Future of Infrastructure: Key Trends to considerThe Future of Infrastructure: Key Trends to consider
The Future of Infrastructure: Key Trends to considerCapgemini
 
APIdays Helsinki 2019 - How to Minimize Coupling in API Production and Consum...
APIdays Helsinki 2019 - How to Minimize Coupling in API Production and Consum...APIdays Helsinki 2019 - How to Minimize Coupling in API Production and Consum...
APIdays Helsinki 2019 - How to Minimize Coupling in API Production and Consum...apidays
 
Develop web APIs in PHP using middleware with Expressive (Code Europe)
Develop web APIs in PHP using middleware with Expressive (Code Europe)Develop web APIs in PHP using middleware with Expressive (Code Europe)
Develop web APIs in PHP using middleware with Expressive (Code Europe)Zend by Rogue Wave Software
 

Similar to Creating a GraphQL API in Python: from Django to fully asynchronous (20)

APIdays Paris 2019 - Real World Graphene: Lessons Learned from Building a Gra...
APIdays Paris 2019 - Real World Graphene: Lessons Learned from Building a Gra...APIdays Paris 2019 - Real World Graphene: Lessons Learned from Building a Gra...
APIdays Paris 2019 - Real World Graphene: Lessons Learned from Building a Gra...
 
London Oracle Developer Meetup - June 18 - Drones with APIs
London Oracle Developer Meetup - June 18 - Drones with APIsLondon Oracle Developer Meetup - June 18 - Drones with APIs
London Oracle Developer Meetup - June 18 - Drones with APIs
 
OSS Tools: Creating a Reverse Engineering Plug-in for r2frida
OSS Tools: Creating a Reverse Engineering Plug-in for r2fridaOSS Tools: Creating a Reverse Engineering Plug-in for r2frida
OSS Tools: Creating a Reverse Engineering Plug-in for r2frida
 
Serverless survival kit
Serverless survival kitServerless survival kit
Serverless survival kit
 
Progressive Web App
Progressive Web AppProgressive Web App
Progressive Web App
 
GraphTour 2020 - Practical Applications of Neo4j 4.0
GraphTour 2020 - Practical Applications of Neo4j 4.0GraphTour 2020 - Practical Applications of Neo4j 4.0
GraphTour 2020 - Practical Applications of Neo4j 4.0
 
INTERFACE, by apidays - Design and Build Great Web APIs
INTERFACE, by apidays - Design and Build Great Web APIsINTERFACE, by apidays - Design and Build Great Web APIs
INTERFACE, by apidays - Design and Build Great Web APIs
 
Lesson learned from React native and Flutter
Lesson learned from React native and FlutterLesson learned from React native and Flutter
Lesson learned from React native and Flutter
 
Real User Measurement Insights, NYWebPerf 2018-Aug-09
Real User Measurement Insights, NYWebPerf 2018-Aug-09Real User Measurement Insights, NYWebPerf 2018-Aug-09
Real User Measurement Insights, NYWebPerf 2018-Aug-09
 
Python Programming Essentials - M1 - Course Introduction
Python Programming Essentials - M1 - Course IntroductionPython Programming Essentials - M1 - Course Introduction
Python Programming Essentials - M1 - Course Introduction
 
The Sodium crypto library of PHP 7.2 (PHP Day 2018)
The Sodium crypto library of PHP 7.2 (PHP Day 2018)The Sodium crypto library of PHP 7.2 (PHP Day 2018)
The Sodium crypto library of PHP 7.2 (PHP Day 2018)
 
Building Notebook-based AI Pipelines with Elyra and Kubeflow
Building Notebook-based AI Pipelines with Elyra and KubeflowBuilding Notebook-based AI Pipelines with Elyra and Kubeflow
Building Notebook-based AI Pipelines with Elyra and Kubeflow
 
UC18NA-D3D202-Dianomic-IZoratti-Introduction-To-FogLAMP.pdf
UC18NA-D3D202-Dianomic-IZoratti-Introduction-To-FogLAMP.pdfUC18NA-D3D202-Dianomic-IZoratti-Introduction-To-FogLAMP.pdf
UC18NA-D3D202-Dianomic-IZoratti-Introduction-To-FogLAMP.pdf
 
Meetup 18/10/2018 - Artificiële intelligentie en mobiliteit
Meetup 18/10/2018 - Artificiële intelligentie en mobiliteitMeetup 18/10/2018 - Artificiële intelligentie en mobiliteit
Meetup 18/10/2018 - Artificiële intelligentie en mobiliteit
 
Leveraging Splunk Enterprise Security with the MITRE’s ATT&CK Framework
Leveraging Splunk Enterprise Security with the MITRE’s ATT&CK FrameworkLeveraging Splunk Enterprise Security with the MITRE’s ATT&CK Framework
Leveraging Splunk Enterprise Security with the MITRE’s ATT&CK Framework
 
Notebook-based AI Pipelines with Elyra and Kubeflow
Notebook-based AI Pipelines with Elyra and KubeflowNotebook-based AI Pipelines with Elyra and Kubeflow
Notebook-based AI Pipelines with Elyra and Kubeflow
 
apidays LIVE New York - Building Great Web APIs by Mike Amundsen
apidays LIVE New York - Building Great Web APIs by Mike Amundsenapidays LIVE New York - Building Great Web APIs by Mike Amundsen
apidays LIVE New York - Building Great Web APIs by Mike Amundsen
 
The Future of Infrastructure: Key Trends to consider
The Future of Infrastructure: Key Trends to considerThe Future of Infrastructure: Key Trends to consider
The Future of Infrastructure: Key Trends to consider
 
APIdays Helsinki 2019 - How to Minimize Coupling in API Production and Consum...
APIdays Helsinki 2019 - How to Minimize Coupling in API Production and Consum...APIdays Helsinki 2019 - How to Minimize Coupling in API Production and Consum...
APIdays Helsinki 2019 - How to Minimize Coupling in API Production and Consum...
 
Develop web APIs in PHP using middleware with Expressive (Code Europe)
Develop web APIs in PHP using middleware with Expressive (Code Europe)Develop web APIs in PHP using middleware with Expressive (Code Europe)
Develop web APIs in PHP using middleware with Expressive (Code Europe)
 

Recently uploaded

Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slidevu2urc
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘RTylerCroy
 
Google AI Hackathon: LLM based Evaluator for RAG
Google AI Hackathon: LLM based Evaluator for RAGGoogle AI Hackathon: LLM based Evaluator for RAG
Google AI Hackathon: LLM based Evaluator for RAGSujit Pal
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)Gabriella Davis
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountPuma Security, LLC
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationRidwan Fadjar
 
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024BookNet Canada
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxMalak Abu Hammad
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreternaman860154
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonAnna Loughnan Colquhoun
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking MenDelhi Call girls
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Drew Madelung
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsMaria Levchenko
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Igalia
 
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024Scott Keck-Warren
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024Results
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure servicePooja Nehwal
 
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...HostedbyConfluent
 
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersEnhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersThousandEyes
 
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Alan Dix
 

Recently uploaded (20)

Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
Google AI Hackathon: LLM based Evaluator for RAG
Google AI Hackathon: LLM based Evaluator for RAGGoogle AI Hackathon: LLM based Evaluator for RAG
Google AI Hackathon: LLM based Evaluator for RAG
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path Mount
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 Presentation
 
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptx
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
 
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
 
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
 
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersEnhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
 
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
 

Creating a GraphQL API in Python: from Django to fully asynchronous

  • 1. COPYRIGHT © 2009–2019 MIRUMEE SOFTWARE Creating a GraphQL API in Python: from Django to fully asynchronous Marcin Gębala & Patryk Zawadzki DjangoCon Europe 2019
  • 2. COPYRIGHT © 2009–2019 MIRUMEE SOFTWARE About us Marcin Gębala Python developer @ Mirumee Software, Lead developer @ Saleor github.com/maarcingebala @maarcingebala Patryk Zawadzki Head of Technology @ Mirumee Software, Python developer github.com/patrys @patrys
  • 3. COPYRIGHT © 2009–2019 MIRUMEE SOFTWARE Agenda ■ Saleor ■ GraphQL - core concepts ■ Workshop
  • 4. COPYRIGHT © 2009–2019 MIRUMEE SOFTWARE https://github.com/mirumee/graphql-workshop
  • 5. COPYRIGHT © 2009–2019 MIRUMEE SOFTWARE Saleor - open-source e-commerce platform Backend: Django + GraphQL API (Graphene) Frontend: TypeScript + Apollo Client + React github.com/mirumee/saleor
  • 6. COPYRIGHT © 2009–2019 MIRUMEE SOFTWARE ■ Single endpoint, single request ■ Client defines what data to fetch ■ Strong typing ■ Introspection ■ Queries, mutations, subscriptions GraphQL - core concepts
  • 7. COPYRIGHT © 2009–2019 MIRUMEE SOFTWARE Queries ■ Queries allow fetching data from the server. ■ Each query has a resolver - a function that defines how to fetch the data from a data source (any).
  • 8. COPYRIGHT © 2009–2019 MIRUMEE SOFTWARE Mutations ■ Mutations allow modifying data on the server.
  • 9. COPYRIGHT © 2009–2019 MIRUMEE SOFTWARE ■ A schema file defines the types and operations available in the API. ■ A clear contract between backend and frontend ■ Easy to find usages of particular types Schema
  • 10. COPYRIGHT © 2009–2019 MIRUMEE SOFTWARE Ariadne github.com/mirumee/ariadne Ariadne is a Python library for implementing schema-first GraphQL servers that is simple to use and open for extension. ■ Schema-first approach ■ Inspired by Apollo Server
  • 11. COPYRIGHT © 2009–2019 MIRUMEE SOFTWARE https://github.com/mirumee/graphql-workshop
  • 12. COPYRIGHT © 2009–2019 MIRUMEE SOFTWARE Intermission: asyncio
  • 13. COPYRIGHT © 2009–2019 MIRUMEE SOFTWARE Event loop example from Python’s documentation
  • 14. COPYRIGHT © 2009–2019 MIRUMEE SOFTWARE https://github.com/mirumee/graphql-workshop
  • 15. COPYRIGHT © 2009–2019 MIRUMEE SOFTWARE THANK YOU! @maarcingebala @patrys