Thomas Schorr, https://2020.ploneconf.org/speakers/thomas-schorr
Pyruvate is a non-blocking, multithreaded WSGI server with competitive performance, implemented in Rust.
It features non-blocking read/write based on mio (https://docs.rs/mio/), a rust-cpython (https://docs.rs/cpython/) based Python interface and a worker pool based on threadpool (https://docs.rs/threadpool/).
The sendfile system call is used for efficient file transfer.
Pyruvate integrates with the Python logging API using asynchronous logging.
PasteDeploy configuration and systemd socket activation are supported.
Beta releases are available for CPython (>=3.6) and Linux.
The talk will present the current state of the project and show how to use Pyruvate with Zope/Plone and other Python web frameworks.
Another focus will be on the roadmap towards a 1.0 release scheduled for end of this year.
https://gitlab.com/tschorr/pyruvate
https://pypi.org/project/pyruvate/
https://2020.ploneconf.org/talks/pyruvate-a-reasonably-fast-non-blocking-multithreaded-wsgi-server/
Handling user passwords safely is hard, but replacing passwords on the web in a reasonable way is even harder. Really, this should have been in the browser all along. In this talk you we will see how Persona attempts to solve this issue.
APIs are a key part of modern web applications and a growing security challenge that isn’t well understood by developers and application security managers, leading to exposed APIs that give hackers access to sensitive data. Find out how to secure your APIs and prevent vulnerabilities from making it into production.
Looking at the full API Product Lifecycle, from defining an API and implementing the API, to launching with a solid developer site and experience, let’s see the newest tools - and potentially upcoming opportunities - to automate the creation of a solid developer experience.
Creating a successful API requires a proper process from concept and design, through development, and into ongoing maintenance and responsive developer support. As developer expectations for better-quality APIs increase, tools have made it easier to implement this well. Thanks to standards like OpenAPIs, it’s easier to create a quality API, developer site, and overall experience. Many of us create API documentation or code libraries automatically from an OpenAPI spec, but there’s a lot more coming along to make our lives easier, and to make our APIs look better. In reviewing the full API Product Lifecycle to design an API people will use, let’s see the newest tools - and potentially upcoming opportunities - to better automate the creation of a compelling developer program.
apidays LIVE New York 2021 - API tool chain for low budget programs by Paul K...apidays
apidays LIVE New York 2021 - API-driven Regulations for Finance, Insurance, and Healthcare
July 28 & 29, 2021
API tool chain for low budget programs
Paul Krajewski, Sr. Integration Engineer at Dina Care
API Developer Experience: Why it Matters, and How Documenting Your API with S...SmartBear
Whether you’re new to Swagger, or have already been using the framework for API design, there’s a good chance you still have questions about how to improve your API documentation. Creating API documentation your consumers will love can take some work, but the investment will have a significant payoff in the form of a great developer experience, easier implementation, and improved adoption of your API.
This presentation covers good developer experience in detail, focusing on why and how to provide an optimal experience for developers using your API. We will also cover how Swagger has changed the API design and documentation landscape, and finally show some good practices for API documentation using Swagger in SwaggerHub’s integrated API development platform.
Things to expect in this webinar:
What is Developer Experience (DX)?
What does it mean for an API to have good DX?
API documentation in the context of good DX?
An introduction to the Swagger framework
Designing APIs from a usability perspective using Swagger and SwaggerHub
Swagger is a description standard of REST API. I will show you features of Swagger UI, and how to make it out with grape and grape-swagger. At the end introduces PostgREST and emphasizes DRY principle.
Helps you to understand Swagger and its practical uses for representing REST APIs. You’ll learn some ways to get started. We’ll survey some of the tools and resources for describing REST APIs with Swagger. We’ll talk about what Swagger is (a specification and framework) — and isn’t (merely another doc tool). We’ll talk about the pros and cons of the Swagger-UI. And we’ll look at how Swagger helps people to learn about and explore an API.
Handling user passwords safely is hard, but replacing passwords on the web in a reasonable way is even harder. Really, this should have been in the browser all along. In this talk you we will see how Persona attempts to solve this issue.
APIs are a key part of modern web applications and a growing security challenge that isn’t well understood by developers and application security managers, leading to exposed APIs that give hackers access to sensitive data. Find out how to secure your APIs and prevent vulnerabilities from making it into production.
Looking at the full API Product Lifecycle, from defining an API and implementing the API, to launching with a solid developer site and experience, let’s see the newest tools - and potentially upcoming opportunities - to automate the creation of a solid developer experience.
Creating a successful API requires a proper process from concept and design, through development, and into ongoing maintenance and responsive developer support. As developer expectations for better-quality APIs increase, tools have made it easier to implement this well. Thanks to standards like OpenAPIs, it’s easier to create a quality API, developer site, and overall experience. Many of us create API documentation or code libraries automatically from an OpenAPI spec, but there’s a lot more coming along to make our lives easier, and to make our APIs look better. In reviewing the full API Product Lifecycle to design an API people will use, let’s see the newest tools - and potentially upcoming opportunities - to better automate the creation of a compelling developer program.
apidays LIVE New York 2021 - API tool chain for low budget programs by Paul K...apidays
apidays LIVE New York 2021 - API-driven Regulations for Finance, Insurance, and Healthcare
July 28 & 29, 2021
API tool chain for low budget programs
Paul Krajewski, Sr. Integration Engineer at Dina Care
API Developer Experience: Why it Matters, and How Documenting Your API with S...SmartBear
Whether you’re new to Swagger, or have already been using the framework for API design, there’s a good chance you still have questions about how to improve your API documentation. Creating API documentation your consumers will love can take some work, but the investment will have a significant payoff in the form of a great developer experience, easier implementation, and improved adoption of your API.
This presentation covers good developer experience in detail, focusing on why and how to provide an optimal experience for developers using your API. We will also cover how Swagger has changed the API design and documentation landscape, and finally show some good practices for API documentation using Swagger in SwaggerHub’s integrated API development platform.
Things to expect in this webinar:
What is Developer Experience (DX)?
What does it mean for an API to have good DX?
API documentation in the context of good DX?
An introduction to the Swagger framework
Designing APIs from a usability perspective using Swagger and SwaggerHub
Swagger is a description standard of REST API. I will show you features of Swagger UI, and how to make it out with grape and grape-swagger. At the end introduces PostgREST and emphasizes DRY principle.
Helps you to understand Swagger and its practical uses for representing REST APIs. You’ll learn some ways to get started. We’ll survey some of the tools and resources for describing REST APIs with Swagger. We’ll talk about what Swagger is (a specification and framework) — and isn’t (merely another doc tool). We’ll talk about the pros and cons of the Swagger-UI. And we’ll look at how Swagger helps people to learn about and explore an API.
Presented at JavaOne 2016.
Using Swagger has become the most popular way to describe REST APIs across the web, enabling people to more quickly understand and communicate with services, with developer-friendly documentation and rich, autogenerated client SDKs. As the API has moved more into being one of the most important aspects of a service, the Swagger definition has become increasingly more important and essential to the design phase. This presentation explains how the Swagger definition can be used to streamline the iteration process and enable client and server engineers to develop concurrently with complex APIs.
This talk started with a quick description of APIs and the importance of good documentation. We then introduced Swagger, talked about how/why it helps in solving this process. Finally, we talked about a number of Node.js tools we've built to help make API design, API development and better overall APIs using Node.js and Swagger.
Crystal clear service interfaces w/ Swagger/OpenAPIScott Triglia
Learn how to better communicate between Python services. We'll use simple-to-follow examples and go from a service with undocumented endpoints to one which has full docs and validation on requests. Learn how to use Swagger tooling for python, including the bravado (client) and pyramid_swagger (server) libraries. In the end, you'll (hopefully!) find nirvana and make the machines do all the hard work for you.
Swagger APIs for Humans and Robots (Gluecon)Tony Tam
Presentation to Gluecon 2014 about Swagger for API development and adoption of services. Reverb also announced the Swagger 2.0 Working Group, with Apigee as a founding member
Join us for an overview of REST, the Force.com REST API, and learn how to use that REST API with Swagger, a language-agnostic framework for describing, producing, consuming, and visualizing RESTful web services. You'll learn how Swagger can generate a Spring MVC Controller to consume the Force.com REST API, and keep client and documentation systems in sync with the server.
Supporting slide deck for Tony Tam's presentation at I Love APIs 2015. Covers the new swagger project, Swagger Inflector, which allows an API-first definition for REST APIs.
companion tutorial:
https://medium.com/@augusteo/streamlining-api-with-swagger-io-9f20470d2f42#.twnbi4gr5
Learn about the way Swagger stack and OpenAPI-spec can help you and your team to design, develop and implement API server, client and documentation.
In this talk we will explore what Swagger is, how it can help you streamline your team's API development. The finale will be a live demo on how to deploy Ruby Sinatra API server and Swift iOS client using the Swagger code generation in 5 minutes.
DevQA: make your testers happier with Groovy, Spock and Geb (Greach 2014)Alvaro Sanchez-Mariscal
Writing functional tests using Geb in a Grails application is fine for a development team. But when you have QA automation engineers, giving them access to the Grails app might not be the best solution (specially when they belong to a different team).
So the same way DevOps allow developers and sysadmins collaborate together, let’s talk about DevQA, and make them happy using a framework stack powered by Groovy.
Besides above considerations, in this talk I will show a live example on how to setup an independent project for functional tests using Gradle, Groovy, Spock and Geb.
The Recording HTTP Proxy: Not Yet Another Messiah - Bulgaria PHP 2019Viktor Todorov
In our work we tend to believe in Messiah. A messiah can be the new magic tool which will solve all our problems, or a shiny framework, so much better than everything we have used before, or even a person in our team. We all know the messiah in software testing. It’s the Unit Testing. But is the unit test the one and the only way to test a software? The answer is no. This lecture will show you a new approach to software testing using a Recording HTTP Proxy and how it can help you achieve better quality of your software. Without proclaiming it as “The Great New Messiah”.
Presented at JavaOne 2016.
Using Swagger has become the most popular way to describe REST APIs across the web, enabling people to more quickly understand and communicate with services, with developer-friendly documentation and rich, autogenerated client SDKs. As the API has moved more into being one of the most important aspects of a service, the Swagger definition has become increasingly more important and essential to the design phase. This presentation explains how the Swagger definition can be used to streamline the iteration process and enable client and server engineers to develop concurrently with complex APIs.
This talk started with a quick description of APIs and the importance of good documentation. We then introduced Swagger, talked about how/why it helps in solving this process. Finally, we talked about a number of Node.js tools we've built to help make API design, API development and better overall APIs using Node.js and Swagger.
Crystal clear service interfaces w/ Swagger/OpenAPIScott Triglia
Learn how to better communicate between Python services. We'll use simple-to-follow examples and go from a service with undocumented endpoints to one which has full docs and validation on requests. Learn how to use Swagger tooling for python, including the bravado (client) and pyramid_swagger (server) libraries. In the end, you'll (hopefully!) find nirvana and make the machines do all the hard work for you.
Swagger APIs for Humans and Robots (Gluecon)Tony Tam
Presentation to Gluecon 2014 about Swagger for API development and adoption of services. Reverb also announced the Swagger 2.0 Working Group, with Apigee as a founding member
Join us for an overview of REST, the Force.com REST API, and learn how to use that REST API with Swagger, a language-agnostic framework for describing, producing, consuming, and visualizing RESTful web services. You'll learn how Swagger can generate a Spring MVC Controller to consume the Force.com REST API, and keep client and documentation systems in sync with the server.
Supporting slide deck for Tony Tam's presentation at I Love APIs 2015. Covers the new swagger project, Swagger Inflector, which allows an API-first definition for REST APIs.
companion tutorial:
https://medium.com/@augusteo/streamlining-api-with-swagger-io-9f20470d2f42#.twnbi4gr5
Learn about the way Swagger stack and OpenAPI-spec can help you and your team to design, develop and implement API server, client and documentation.
In this talk we will explore what Swagger is, how it can help you streamline your team's API development. The finale will be a live demo on how to deploy Ruby Sinatra API server and Swift iOS client using the Swagger code generation in 5 minutes.
DevQA: make your testers happier with Groovy, Spock and Geb (Greach 2014)Alvaro Sanchez-Mariscal
Writing functional tests using Geb in a Grails application is fine for a development team. But when you have QA automation engineers, giving them access to the Grails app might not be the best solution (specially when they belong to a different team).
So the same way DevOps allow developers and sysadmins collaborate together, let’s talk about DevQA, and make them happy using a framework stack powered by Groovy.
Besides above considerations, in this talk I will show a live example on how to setup an independent project for functional tests using Gradle, Groovy, Spock and Geb.
The Recording HTTP Proxy: Not Yet Another Messiah - Bulgaria PHP 2019Viktor Todorov
In our work we tend to believe in Messiah. A messiah can be the new magic tool which will solve all our problems, or a shiny framework, so much better than everything we have used before, or even a person in our team. We all know the messiah in software testing. It’s the Unit Testing. But is the unit test the one and the only way to test a software? The answer is no. This lecture will show you a new approach to software testing using a Recording HTTP Proxy and how it can help you achieve better quality of your software. Without proclaiming it as “The Great New Messiah”.
2019 StartIT - Boosting your performance with BlackfireMarko Mitranić
A workshop held in StartIT as part of Catena Media learning sessions.
We aim to dispel the notion that large PHP applications tend to be sluggish, resource-intensive and slow compared to what the likes of Python, Erlang or even Node can do. The issue is not with optimising PHP internals - it's the lack of proper introspection tools and getting them into our every day workflow that counts! In this workshop we will talk about our struggles with whipping PHP Applications into shape, as well as work together on some of the more interesting examples of CPU or IO drain.
OpenNebulaConf 2016 - Measuring and tuning VM performance by Boyan Krosnov, S...OpenNebula Project
In this session we'll explore measuring VM performance and evaluating changes to settings or infrastructure which can affect performance positively. We'll also share the best current practice for architecture for high performance clouds from our experience.
Presentation from webinar held on August 19th, 2020, with Xdebug developer Derick Rethans and Seravo CEO Otto Kekäläinen.
This presentation shows you how to use Xdebug (which is very easy with the Seravo WordPress development environment!) to make a record of what the WordPress PHP code does during a website page load, and how to use that information to optimize the performance of your WordPress site.
For a video recording and Dericks presentation see https://seravo.com/blog/webinar-xdebug-profile-php/
Jun Heider - Flex Application Profiling By Example360|Conferences
This session will be light on slides and heavy on demonstration. The session will start with a brief explanation of the concepts that will be discussed and then kick into high gear with demonstrations and live profiling with the Flex Builder Profiler. During the session the features of the Flex Builder Profiler will be illustrated and light will be shed on how to analyze the data collected by the Profiler. The goal of this session will be to arm the attendee with the ability to use the Flex Builder Profiler to help increase the responsiveness and decrease the memory consumed by their applications.
This presentation shall address the web2py web framework, my favorite way to develop web apps.
web2py is a free, open-source web framework for agile development of secure database-driven web applications; it is written in Python and programmable in Python. web2py is a full-stack framework, meaning that it contains all the components you need to build fully functional web applications.
Ease of use is the primary goal for web2py. For us, this means reducing the learning and deployment time. This is why web2py is a full-stack framework without dependencies. It requires no installation and has no configuration files. Everything works out of the box, including a web server, database and a web-based IDE that gives access to all the main features.
I will show you why web2py can make you more productive by bringing the result of a reflection over the best ideas of the most popular MVC based web frameworks enforcing the best practices for a fast, scalable and secure web application with minimal effort. There will be a live demo where you can get a faster grasp on how does it work and how fun it can be.
For more: www.web2py.com
GDD Japan 2009 - Designing OpenSocial Apps For Speed and ScalePatrick Chanezon
Google Developer Days Japan 2009 - Designing OpenSocial Apps For Speed and Scale
Original slides from Arne Roomann-Kurrik & Chris Chabot with a few Zen quotes and references added by me:-)
"You Don't Know NODE.JS" by Hengki Mardongan Sihombing (Urbanhire)Tech in Asia ID
Hengki Sihombing is the Co-Founder and CTO Urbanhire, a technology company who provides Software as a Service (SaaS) for Hiring and Recruitment and also Job search agregator for jobseeker.
Before founding Urbanhire, Hengki had over 10 years of professional experience in software development in companies like: OLX, Wego, Merah Putih Inc, GushCloud. Hengki also actively participates in various Technology communities. He founded and leads the JakartaJS Community with more than 1900 Members.
***
This slide was shared at Tech in Asia Product Development Conference 2017 (PDC'17) on 9-10 August 2017.
Get more insightful updates from TIA by subscribing techin.asia/updateselalu
www.caucho.com
Using industry standard tool and methodology, Resin Pro web server was put to the test versus Nginx, a popular web server with a reputation for efficiency and performance. Nginx is known to be faster and more reliable under load than the popular Apache HTTPD. Benchmark tests between Resin and Nginx yielded competitive figures, with Resin leading with fewer errors and faster response times. In numerous and varying tests, Resin handled 20% to 25% more load while still outperforming Nginx. In particular, Resin was able to sustain fast response times under extremely heavy load while Nginx performance degraded.
Video available from Parleys.com:
https://www.parleys.com/talk/java-versus-javascript-head-head
Programmers are often advised to use “the right tool for the right job.” So how does Java compare to JavaScript? This session compares and contrasts Java and JavaScript in different areas and determines just which is the king of the languages that start with Java.
Janina Hard, https://2020.ploneconf.org/speakers/janina-hard
Short presentation on my work for a block to build forms in Volto and other possible approaches
https://2020.ploneconf.org/talks/form-block-formbuilder/view
Améliorer la gouvernance et la gestion interne de la ville avec PlonePloneFoundation
Dimitri Moerenhout, https://2020.ploneconf.org/speakers/dimitri-moerenhout
Improving the governance and internal management of the city with Plone
Collaborative platforms ensure efficient management of municipal councils from the examination of files by the municipal agent to the publication of decisions to the citizen (https://www.deliberations.be). Project management and document management are also cross-cutting tools enabling administrations to avoid operating in silos.
--
Les plateformes collaboratives permettent d’assurer une gestion efficace des conseils municipaux de l’instruction des dossiers par l’agent communal à la publication des décisions vers le citoyen (https://www.deliberations.be). La gestion de projets et la gestion documentaire sont également des outils transversaux permettant aux administrations d’éviter le fonctionnement en silo.
https://2020.ploneconf.org/talks/ameliorer-la-gouvernance-et-la-gestion-interne-de-la-ville-avec-plone/view
Calvin Hendryx-Parker, https://2020.ploneconf.org/speakers/calvin-hendryx-parker
In this talk I will walk through all of the intricacies of getting Plone to run on the cloud using cloud Native technologies. I walk though the whole process of setting up your storages, your ingresses, your load balancers, running Plone on Container etc.
https://2020.ploneconf.org/talks/running-plone-on-aws/
Maurits van Rees, https://2020.ploneconf.org/speakers/maurits-van-rees
Maurits will cover what has happened the last year in Plone 4 and 5, and what are the future plans for Plone 5. Canonical information on this can be found at https://plone.org/download/release-schedule
https://2020.ploneconf.org/talks/state-of-plone/view
Eric Steele, https://2020.ploneconf.org/speakers/eric-steele
Maurits van Rees, https://2020.ploneconf.org/speakers/maurits-van-rees
Eric will talk about the current state of Plone development and Plone 6
Maurits will cover what has happened the last year in Plone 4 and 5, and what are the future plans for Plone 5. Canonical information on this can be found at https://plone.org/download/release-schedule
https://2020.ploneconf.org/talks/state-of-plone/view
Peter Holzer, https://2020.ploneconf.org/speakers/peter-holzer
Plone theming has never been this easy!
https://2020.ploneconf.org/talks/plone-6-theming-based-on-barceloneta-lts/view
Peter Holzer, https://2020.ploneconf.org/speakers/peter-holzer
Stefan Antonelli, https://2020.ploneconf.org/speakers/stefan-antonelli
The story behind Barceloneta LTS (long term support)
https://2020.ploneconf.org/talks/modernize-plone2019s-classic-ui/view
Christopher Lozinski, https://2020.ploneconf.org/speakers/christopher-lozinki
Green Party Maps is a hierarchical data model of the United States Green Party, The software is currently running on the web site of the United States Green Party presidential candidate Howie Hawkins. It includes both national and state party maps. The maps show candidates, parties and caucuses. It is also a directory linking to all relevant social media pages. Any branch of the tree can be turned into its own instant website by hiding the rest of the tree. The software enables states to generate recommended voting lists. It is spreading through the US green Party.
Green Party Maps is built on top of the Forest Wiki, which is built on top of the ZODB. A separate talk proposal has been submitted for the Forest Wiki.
You can watch a 10 minute video about Green party Maps here: https://maps.howie2020.tech/introductory-video
https://2020.ploneconf.org/talks/green-party-maps
Nilesh Gulia, https://2020.ploneconf.org/speakers/nilesh-gulia
As from 2018, we are aiming to develop Volto as much extensible as possible. It all started with the aim of behaving as a highly customisable object. So a user has power to develop from a simple webpage to enterprise grade intranets in his/her own way.
This talk generalises how we approached from modern customisation techniques like component shadowing to building highly modifiable and pluggable blocks/components, widgets in the form of addons.
https://2020.ploneconf.org/talks/volto-a-journey-towards-personalisation
Nilesh Gulia, https://2020.ploneconf.org/speakers/nilesh-gulia
As an application scales, we need to make adjustments in Javascript bundle which gives a breathing space when it comes to loading massive client apps.
We cannot maintain a single javascript bundle as the application grows, it can hinder website performance in various cases.
A few different approaches we can take when it comes to bundle splitting JavaScript.
Dynamic code splitting: Dynamic code splitting adds the ability to point out the fields/components which we want to lazy-load i.e load on demand and split out in a separate bundle. This is opposite to statically load where we bundle out dependencies into a single file during build time.
This talk demonstrates how we recently inculcated and leveraged `loadable-components` into Volto core to load dynamic chunks while maintaining server side rendering.
https://2020.ploneconf.org/talks/bundle-splitting-in-volto
Asking questions for the benefit of your future self - Growing with the Plone...PloneFoundation
David Bain, https://2020.ploneconf.org/speakers/david-bain
In this talk I trace my history of learning in the Plone community from mailing lists and IRC to stackoverflow and the online forum. The goal of this talk is to provide a "template" for newbies who want to confidently engage with the Plone community. The underlying principles can be applied to engaging with any tech community and will help anyone who wants to benefit from and contribute to open source communities.
https://2020.ploneconf.org/talks/asking-questions-for-the-benefit-of-your-future-self-growing-with-the-plone-community
Alex Clark, https://2020.ploneconf.org/speakers/alex-clark
The State of Pillow
How it started
Frustrated with seeing the proliferation of third party repackagings of PIL all containing identical or similar packaging fixes none of which were hosted by the Python Package Index, on July 31, 2010 Alex Clark forked the Python Imaging Library with Hanno Schlicting's changes to setup.py, and published the results to the Python Package Index as Pillow 1.0. [^1]
How it's going
Pillow has become the de facto PIL: successfully providing a modern alternative to PIL for the last 10 years, adding Python 3 support, remaining active while PIL development stalled, getting development funded for four part time developers [^3] and taking over ownership of the PIL project on the Python Packaging Index as suggested by the Python Packaging Authority. [^2].
The Story of Pillow
In this talk, Alex Clark will regale Plonistas in attendance with the "tale of the little fork that could", Pillow, including such topics as
- History
- First few years
- Mainstream adoption
- Enter: Tidelift
- Lessons
- Future
See you there! Thank you PloneConf for the opportunity.
[^1]: https://github.com/python-pillow/grant-proposal2#history
[^2]: https://pypi.org/project/PIL/
[^3]: https://www.tidelift.com/subscription/pkg/pypi-pillow
https://2020.ploneconf.org/talks/the-state-of-pillow
Steve Piercy, https://2020.ploneconf.org/speakers/steve-piercy
Length: Short Talk
Target Level: Beginner
Target Audience: Developer
Freelancers, small development shops, and large business teams appreciate how Pyramid serves their needs. Pyramid is a web framework for Python and one of many projects under the Pylons Project. We will discuss the latest developments in Pyramid and other Pylons Project projects. We will then demonstrate a recently developed Pyramid application used by public electric utilities to analyze and reduce costs associated with injury and illness. The Pyramid application integrates with OAuth and Django REST Framework providers. It was a collaboration with a small team, with one person taking the lead, and serves as a good example of what a one-person shop with a little help can do with Pyramid.
When: From 12/9/20 5:30 PM to 12/9/20 6:00 PM CET
Carlos de la Guardia's https://2020.ploneconf.org/speakers/carlos-de-la-guardia presentation on the Questions form library https://2020.ploneconf.org/talks/questions-a-python-form-library-for-quick-powerful-javascript-rendered-forms/view.
Questions: a Python form library for quick, powerful, javascript-rendered forms
Questions is a Python form library that uses the power of SurveyJS for the UI. The philosophy behind Questions is that modern form rendering usually requires integrating some complex Javascript widgets anyway, so why not skip the markup generation completely? This talk introduces the library and shows how to use it and when it's a good fit for Python web projects.
Globus Connect Server Deep Dive - GlobusWorld 2024Globus
We explore the Globus Connect Server (GCS) architecture and experiment with advanced configuration options and use cases. This content is targeted at system administrators who are familiar with GCS and currently operate—or are planning to operate—broader deployments at their institution.
SOCRadar Research Team: Latest Activities of IntelBrokerSOCRadar
The European Union Agency for Law Enforcement Cooperation (Europol) has suffered an alleged data breach after a notorious threat actor claimed to have exfiltrated data from its systems. Infamous data leaker IntelBroker posted on the even more infamous BreachForums hacking forum, saying that Europol suffered a data breach this month.
The alleged breach affected Europol agencies CCSE, EC3, Europol Platform for Experts, Law Enforcement Forum, and SIRIUS. Infiltration of these entities can disrupt ongoing investigations and compromise sensitive intelligence shared among international law enforcement agencies.
However, this is neither the first nor the last activity of IntekBroker. We have compiled for you what happened in the last few days. To track such hacker activities on dark web sources like hacker forums, private Telegram channels, and other hidden platforms where cyber threats often originate, you can check SOCRadar’s Dark Web News.
Stay Informed on Threat Actors’ Activity on the Dark Web with SOCRadar!
Field Employee Tracking System| MiTrack App| Best Employee Tracking Solution|...informapgpstrackings
Keep tabs on your field staff effortlessly with Informap Technology Centre LLC. Real-time tracking, task assignment, and smart features for efficient management. Request a live demo today!
For more details, visit us : https://informapuae.com/field-staff-tracking/
Check out the webinar slides to learn more about how XfilesPro transforms Salesforce document management by leveraging its world-class applications. For more details, please connect with sales@xfilespro.com
If you want to watch the on-demand webinar, please click here: https://www.xfilespro.com/webinars/salesforce-document-management-2-0-smarter-faster-better/
TROUBLESHOOTING 9 TYPES OF OUTOFMEMORYERRORTier1 app
Even though at surface level ‘java.lang.OutOfMemoryError’ appears as one single error; underlyingly there are 9 types of OutOfMemoryError. Each type of OutOfMemoryError has different causes, diagnosis approaches and solutions. This session equips you with the knowledge, tools, and techniques needed to troubleshoot and conquer OutOfMemoryError in all its forms, ensuring smoother, more efficient Java applications.
In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...Juraj Vysvader
In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I didn't get rich from it but it did have 63K downloads (powered possible tens of thousands of websites).
A Comprehensive Look at Generative AI in Retail App Testing.pdfkalichargn70th171
Traditional software testing methods are being challenged in retail, where customer expectations and technological advancements continually shape the landscape. Enter generative AI—a transformative subset of artificial intelligence technologies poised to revolutionize software testing.
Providing Globus Services to Users of JASMIN for Environmental Data AnalysisGlobus
JASMIN is the UK’s high-performance data analysis platform for environmental science, operated by STFC on behalf of the UK Natural Environment Research Council (NERC). In addition to its role in hosting the CEDA Archive (NERC’s long-term repository for climate, atmospheric science & Earth observation data in the UK), JASMIN provides a collaborative platform to a community of around 2,000 scientists in the UK and beyond, providing nearly 400 environmental science projects with working space, compute resources and tools to facilitate their work. High-performance data transfer into and out of JASMIN has always been a key feature, with many scientists bringing model outputs from supercomputers elsewhere in the UK, to analyse against observational or other model data in the CEDA Archive. A growing number of JASMIN users are now realising the benefits of using the Globus service to provide reliable and efficient data movement and other tasks in this and other contexts. Further use cases involve long-distance (intercontinental) transfers to and from JASMIN, and collecting results from a mobile atmospheric radar system, pushing data to JASMIN via a lightweight Globus deployment. We provide details of how Globus fits into our current infrastructure, our experience of the recent migration to GCSv5.4, and of our interest in developing use of the wider ecosystem of Globus services for the benefit of our user community.
How to Position Your Globus Data Portal for Success Ten Good PracticesGlobus
Science gateways allow science and engineering communities to access shared data, software, computing services, and instruments. Science gateways have gained a lot of traction in the last twenty years, as evidenced by projects such as the Science Gateways Community Institute (SGCI) and the Center of Excellence on Science Gateways (SGX3) in the US, The Australian Research Data Commons (ARDC) and its platforms in Australia, and the projects around Virtual Research Environments in Europe. A few mature frameworks have evolved with their different strengths and foci and have been taken up by a larger community such as the Globus Data Portal, Hubzero, Tapis, and Galaxy. However, even when gateways are built on successful frameworks, they continue to face the challenges of ongoing maintenance costs and how to meet the ever-expanding needs of the community they serve with enhanced features. It is not uncommon that gateways with compelling use cases are nonetheless unable to get past the prototype phase and become a full production service, or if they do, they don't survive more than a couple of years. While there is no guaranteed pathway to success, it seems likely that for any gateway there is a need for a strong community and/or solid funding streams to create and sustain its success. With over twenty years of examples to draw from, this presentation goes into detail for ten factors common to successful and enduring gateways that effectively serve as best practices for any new or developing gateway.
First Steps with Globus Compute Multi-User EndpointsGlobus
In this presentation we will share our experiences around getting started with the Globus Compute multi-user endpoint. Working with the Pharmacology group at the University of Auckland, we have previously written an application using Globus Compute that can offload computationally expensive steps in the researcher's workflows, which they wish to manage from their familiar Windows environments, onto the NeSI (New Zealand eScience Infrastructure) cluster. Some of the challenges we have encountered were that each researcher had to set up and manage their own single-user globus compute endpoint and that the workloads had varying resource requirements (CPUs, memory and wall time) between different runs. We hope that the multi-user endpoint will help to address these challenges and share an update on our progress here.
Enhancing Research Orchestration Capabilities at ORNL.pdfGlobus
Cross-facility research orchestration comes with ever-changing constraints regarding the availability and suitability of various compute and data resources. In short, a flexible data and processing fabric is needed to enable the dynamic redirection of data and compute tasks throughout the lifecycle of an experiment. In this talk, we illustrate how we easily leveraged Globus services to instrument the ACE research testbed at the Oak Ridge Leadership Computing Facility with flexible data and task orchestration capabilities.
May Marketo Masterclass, London MUG May 22 2024.pdfAdele Miller
Can't make Adobe Summit in Vegas? No sweat because the EMEA Marketo Engage Champions are coming to London to share their Summit sessions, insights and more!
This is a MUG with a twist you don't want to miss.
How Recreation Management Software Can Streamline Your Operations.pptxwottaspaceseo
Recreation management software streamlines operations by automating key tasks such as scheduling, registration, and payment processing, reducing manual workload and errors. It provides centralized management of facilities, classes, and events, ensuring efficient resource allocation and facility usage. The software offers user-friendly online portals for easy access to bookings and program information, enhancing customer experience. Real-time reporting and data analytics deliver insights into attendance and preferences, aiding in strategic decision-making. Additionally, effective communication tools keep participants and staff informed with timely updates. Overall, recreation management software enhances efficiency, improves service delivery, and boosts customer satisfaction.
Into the Box Keynote Day 2: Unveiling amazing updates and announcements for modern CFML developers! Get ready for exciting releases and updates on Ortus tools and products. Stay tuned for cutting-edge innovations designed to boost your productivity.
Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...Globus
Large Language Models (LLMs) are currently the center of attention in the tech world, particularly for their potential to advance research. In this presentation, we'll explore a straightforward and effective method for quickly initiating inference runs on supercomputers using the vLLM tool with Globus Compute, specifically on the Polaris system at ALCF. We'll begin by briefly discussing the popularity and applications of LLMs in various fields. Following this, we will introduce the vLLM tool, and explain how it integrates with Globus Compute to efficiently manage LLM operations on Polaris. Attendees will learn the practical aspects of setting up and remotely triggering LLMs from local machines, focusing on ease of use and efficiency. This talk is ideal for researchers and practitioners looking to leverage the power of LLMs in their work, offering a clear guide to harnessing supercomputing resources for quick and effective LLM inference.
We describe the deployment and use of Globus Compute for remote computation. This content is aimed at researchers who wish to compute on remote resources using a unified programming interface, as well as system administrators who will deploy and operate Globus Compute services on their research computing infrastructure.
Understanding Globus Data Transfers with NetSageGlobus
NetSage is an open privacy-aware network measurement, analysis, and visualization service designed to help end-users visualize and reason about large data transfers. NetSage traditionally has used a combination of passive measurements, including SNMP and flow data, as well as active measurements, mainly perfSONAR, to provide longitudinal network performance data visualization. It has been deployed by dozens of networks world wide, and is supported domestically by the Engagement and Performance Operations Center (EPOC), NSF #2328479. We have recently expanded the NetSage data sources to include logs for Globus data transfers, following the same privacy-preserving approach as for Flow data. Using the logs for the Texas Advanced Computing Center (TACC) as an example, this talk will walk through several different example use cases that NetSage can answer, including: Who is using Globus to share data with my institution, and what kind of performance are they able to achieve? How many transfers has Globus supported for us? Which sites are we sharing the most data with, and how is that changing over time? How is my site using Globus to move data internally, and what kind of performance do we see for those transfers? What percentage of data transfers at my institution used Globus, and how did the overall data transfer performance compare to the Globus users?
Accelerate Enterprise Software Engineering with PlatformlessWSO2
Key takeaways:
Challenges of building platforms and the benefits of platformless.
Key principles of platformless, including API-first, cloud-native middleware, platform engineering, and developer experience.
How Choreo enables the platformless experience.
How key concepts like application architecture, domain-driven design, zero trust, and cell-based architecture are inherently a part of Choreo.
Demo of an end-to-end app built and deployed on Choreo.
Paketo Buildpacks : la meilleure façon de construire des images OCI? DevopsDa...Anthony Dahanne
Les Buildpacks existent depuis plus de 10 ans ! D’abord, ils étaient utilisés pour détecter et construire une application avant de la déployer sur certains PaaS. Ensuite, nous avons pu créer des images Docker (OCI) avec leur dernière génération, les Cloud Native Buildpacks (CNCF en incubation). Sont-ils une bonne alternative au Dockerfile ? Que sont les buildpacks Paketo ? Quelles communautés les soutiennent et comment ?
Venez le découvrir lors de cette session ignite
Paketo Buildpacks : la meilleure façon de construire des images OCI? DevopsDa...
Pyruvate, a reasonably fast, non-blocking, multithreaded WSGI server
1. WSGI Why Rust? Project Status Performance Demo Next steps
Pyruvate, a reasonably fast, non-blocking,
multithreaded WSGI server
Thomas Schorr
Plone Conference 2020
2. WSGI Why Rust? Project Status Performance Demo Next steps
PEP-3333: Python Web Server Gateway Interface
def application(environ, start_response):
"""Simplest possible WSGI application"""
status = '200 OK'
response_headers = [
('Content-type', 'text/plain')]
start_response(status, response_headers)
return [b'Hello World!n']
3. WSGI Why Rust? Project Status Performance Demo Next steps
The Server Side
• The server invokes the application callable once for each HTTP request it
receives
4. WSGI Why Rust? Project Status Performance Demo Next steps
The Server Side
• The server invokes the application callable once for each HTTP request it
receives
• Many possibilities for handling requests
5. WSGI Why Rust? Project Status Performance Demo Next steps
The Server Side
• The server invokes the application callable once for each HTTP request it
receives
• Many possibilities for handling requests
• Single threaded server
6. WSGI Why Rust? Project Status Performance Demo Next steps
The Server Side
• The server invokes the application callable once for each HTTP request it
receives
• Many possibilities for handling requests
• Single threaded server
• Spawn a thread for each incoming request
7. WSGI Why Rust? Project Status Performance Demo Next steps
The Server Side
• The server invokes the application callable once for each HTTP request it
receives
• Many possibilities for handling requests
• Single threaded server
• Spawn a thread for each incoming request
• 1:1 threading, 1:n threading
8. WSGI Why Rust? Project Status Performance Demo Next steps
The Server Side
• The server invokes the application callable once for each HTTP request it
receives
• Many possibilities for handling requests
• Single threaded server
• Spawn a thread for each incoming request
• 1:1 threading, 1:n threading
• maintain a pool of worker threads
9. WSGI Why Rust? Project Status Performance Demo Next steps
The Server Side
• The server invokes the application callable once for each HTTP request it
receives
• Many possibilities for handling requests
• Single threaded server
• Spawn a thread for each incoming request
• 1:1 threading, 1:n threading
• maintain a pool of worker threads
• multiprocessing
10. WSGI Why Rust? Project Status Performance Demo Next steps
The Server Side
• The server invokes the application callable once for each HTTP request it
receives
• Many possibilities for handling requests
• Single threaded server
• Spawn a thread for each incoming request
• 1:1 threading, 1:n threading
• maintain a pool of worker threads
• multiprocessing
• ...
11. WSGI Why Rust? Project Status Performance Demo Next steps
The Server Side
• The server invokes the application callable once for each HTTP request it
receives
• Many possibilities for handling requests
• Single threaded server
• Spawn a thread for each incoming request
• 1:1 threading, 1:n threading
• maintain a pool of worker threads
• multiprocessing
• ...
• The WSGI server can give hints through environ dictionary
12. WSGI Why Rust? Project Status Performance Demo Next steps
The Application Side
• often needs to connect to components that outlive the single request
13. WSGI Why Rust? Project Status Performance Demo Next steps
The Application Side
• often needs to connect to components that outlive the single request
• databases, caches
14. WSGI Why Rust? Project Status Performance Demo Next steps
The Application Side
• often needs to connect to components that outlive the single request
• databases, caches
• connection might not be thread safe
15. WSGI Why Rust? Project Status Performance Demo Next steps
The Application Side
• often needs to connect to components that outlive the single request
• databases, caches
• connection might not be thread safe
• connection/setup might be expensive
16. WSGI Why Rust? Project Status Performance Demo Next steps
The Application Side
• often needs to connect to components that outlive the single request
• databases, caches
• connection might not be thread safe
• connection/setup might be expensive
• all of the above is true for Zope
17. WSGI Why Rust? Project Status Performance Demo Next steps
The Application Side
• often needs to connect to components that outlive the single request
• databases, caches
• connection might not be thread safe
• connection/setup might be expensive
• all of the above is true for Zope
• recipe for disaster: choose a WSGI server with an inappropriate worker
model
18. WSGI Why Rust? Project Status Performance Demo Next steps
Consequence: Limited Choice
of WSGI servers suitable for Zope/Plone.
• waitress (the default) with very good overall performance
• bjoern: fast, non-blocking, single threaded
• ...
19. WSGI Why Rust? Project Status Performance Demo Next steps
More options please
Wishlist:
• multithreaded, 1:1 threading, workerpool
• PasteDeploy entry point
• handle the Zope/Plone use case
• non-blocking
• File wrapper supporting sendfile
• competitive performance
Non Goals
• Python 2
• ASGI (not yet at least)
• Windows
20. WSGI Why Rust? Project Status Performance Demo Next steps
Why Rust?
Naive expectations:
• Faster than Python
• Easier to use than C
21. WSGI Why Rust? Project Status Performance Demo Next steps
Performance
Performance
Emmerich, P. et al (2019): The Case for Writing Network Drivers in High-Level Programming Languages. -
https://www.net.in.tum.de/fileadmin/bibtex/publications/papers/the-case-for-writing-network-drivers-in-high-level-languages.pdf
.
22. WSGI Why Rust? Project Status Performance Demo Next steps
Memory Management through Ownership
• feature unique to Rust
• a set of rules that the compiler checks at compile time
(https://doc.rust-lang.org/book/ch04-01-what-is-ownership.html)
• Each value in Rust has a variable that’s called it’s owner.
• There can be only one owner at a time.
• When the owner goes out of scope, the value will be dropped.
• Drop is a trait; there’s a default implementation that you can override
• You can still control where (stack or heap) your data is stored.
23. WSGI Why Rust? Project Status Performance Demo Next steps
How is that relevant?
Example: interfacing with Python
• Python memory management: reference counting + garbage collection
• association: increasing an objects’ refcount using Py_INCREF
• should match with corresponding Py_DECREF invocations
• garbage collection when object refcount goes to 0
• Py_INCREF/Py_DECREF mismatch: memory leaks, core dumps
24. WSGI Why Rust? Project Status Performance Demo Next steps
How is that relevant?
Example: interfacing with Python
• Python memory management: reference counting + garbage collection
• association: increasing an objects’ refcount using Py_INCREF
• should match with corresponding Py_DECREF invocations
• garbage collection when object refcount goes to 0
• Py_INCREF/Py_DECREF mismatch: memory leaks, core dumps
• 63 occurences of Py_INCREF in BTrees (79 Py_DECREF), 19 in
zope.interface (50 Py_DECREF)
25. WSGI Why Rust? Project Status Performance Demo Next steps
How is that relevant?
Example: interfacing with Python
• Python memory management: reference counting + garbage collection
• association: increasing an objects’ refcount using Py_INCREF
• should match with corresponding Py_DECREF invocations
• garbage collection when object refcount goes to 0
• Py_INCREF/Py_DECREF mismatch: memory leaks, core dumps
• 63 occurences of Py_INCREF in BTrees (79 Py_DECREF), 19 in
zope.interface (50 Py_DECREF)
• 1 Py_INCREF in rust-cpython (4 Py_DECREF)
26. WSGI Why Rust? Project Status Performance Demo Next steps
How is that relevant?
Example: interfacing with Python
• Python memory management: reference counting + garbage collection
• association: increasing an objects’ refcount using Py_INCREF
• should match with corresponding Py_DECREF invocations
• garbage collection when object refcount goes to 0
• Py_INCREF/Py_DECREF mismatch: memory leaks, core dumps
• 63 occurences of Py_INCREF in BTrees (79 Py_DECREF), 19 in
zope.interface (50 Py_DECREF)
• 1 Py_INCREF in rust-cpython (4 Py_DECREF)
• very hard to create a mismatch of Py_INCREF/Py_DECREF
invocations, making it harder to create memory leaks or core dumps
27. WSGI Why Rust? Project Status Performance Demo Next steps
How is that relevant?
Example: interfacing with Python
• Python memory management: reference counting + garbage collection
• association: increasing an objects’ refcount using Py_INCREF
• should match with corresponding Py_DECREF invocations
• garbage collection when object refcount goes to 0
• Py_INCREF/Py_DECREF mismatch: memory leaks, core dumps
• 63 occurences of Py_INCREF in BTrees (79 Py_DECREF), 19 in
zope.interface (50 Py_DECREF)
• 1 Py_INCREF in rust-cpython (4 Py_DECREF)
• very hard to create a mismatch of Py_INCREF/Py_DECREF
invocations, making it harder to create memory leaks or core dumps
• still possible to create more references than needed
28. WSGI Why Rust? Project Status Performance Demo Next steps
Other Rust features
• strict typing will find many problems at compile time
• Pattern matching
• very good documentation, helpful compiler messages
29. WSGI Why Rust? Project Status Performance Demo Next steps
What is Pyruvate from a user perspective
• a package available from PyPI:
30. WSGI Why Rust? Project Status Performance Demo Next steps
What is Pyruvate from a user perspective
• a package available from PyPI:
pip install pyruvate
31. WSGI Why Rust? Project Status Performance Demo Next steps
What is Pyruvate from a user perspective
• a package available from PyPI:
pip install pyruvate
• an importable Python module:
32. WSGI Why Rust? Project Status Performance Demo Next steps
What is Pyruvate from a user perspective
• a package available from PyPI:
pip install pyruvate
• an importable Python module:
import pyruvate
def application(environ, start_response):
"""WSGI application"""
...
pyruvate.serve(application, '0.0.0.0:7878', 3)
33. WSGI Why Rust? Project Status Performance Demo Next steps
Using Pyruvate with Zope/Plone
with plone.recipe.zope2instance:
• buildout.cfg
[instance]
recipe = plone.recipe.zope2instance
http-address = 127.0.0.1:8080
eggs =
Plone
pyruvate
wsgi-ini-template = ${buildout:directory}/
templates/pyruvate.ini.in
• pyruvate.ini.in Template
[server:main]
use = egg:pyruvate#main
socket = %(http_address)s
workers = 2
34. WSGI Why Rust? Project Status Performance Demo Next steps
Pyruvate project structure
• initially created with cargo new --lib
35. WSGI Why Rust? Project Status Performance Demo Next steps
Pyruvate project structure
• initially created with cargo new --lib
• Rust sources in src folder
36. WSGI Why Rust? Project Status Performance Demo Next steps
Pyruvate project structure
• initially created with cargo new --lib
• Rust sources in src folder
• Cargo.toml pulls Rust dependencies
37. WSGI Why Rust? Project Status Performance Demo Next steps
Pyruvate project structure
• initially created with cargo new --lib
• Rust sources in src folder
• Cargo.toml pulls Rust dependencies
• setup.py
• uses setuptools_rust to build a
RustExtension
• defines PasteDeploy entry point
38. WSGI Why Rust? Project Status Performance Demo Next steps
Pyruvate project structure
• initially created with cargo new --lib
• Rust sources in src folder
• Cargo.toml pulls Rust dependencies
• setup.py
• uses setuptools_rust to build a
RustExtension
• defines PasteDeploy entry point
• pyproject.toml to specify build system
requirements (PEP 518)
39. WSGI Why Rust? Project Status Performance Demo Next steps
Pyruvate project structure
• initially created with cargo new --lib
• Rust sources in src folder
• Cargo.toml pulls Rust dependencies
• setup.py
• uses setuptools_rust to build a
RustExtension
• defines PasteDeploy entry point
• pyproject.toml to specify build system
requirements (PEP 518)
• tests folder containing (currently only) Python
tests (unit tests in Rust modules)
40. WSGI Why Rust? Project Status Performance Demo Next steps
Pyruvate project structure
• initially created with cargo new --lib
• Rust sources in src folder
• Cargo.toml pulls Rust dependencies
• setup.py
• uses setuptools_rust to build a
RustExtension
• defines PasteDeploy entry point
• pyproject.toml to specify build system
requirements (PEP 518)
• tests folder containing (currently only) Python
tests (unit tests in Rust modules)
• __init__.py in pyruvate folder
• Paste Deploy entry point
• FileWrapper import
41. WSGI Why Rust? Project Status Performance Demo Next steps
Gitlab Pipeline
• Two stages: test + build
42. WSGI Why Rust? Project Status Performance Demo Next steps
Gitlab Pipeline
• Two stages: test + build
• Linting: rustfmt, clippy
43. WSGI Why Rust? Project Status Performance Demo Next steps
Gitlab Pipeline
• Two stages: test + build
• Linting: rustfmt, clippy
• cargo test
44. WSGI Why Rust? Project Status Performance Demo Next steps
Gitlab Pipeline
• Two stages: test + build
• Linting: rustfmt, clippy
• cargo test
• coverage report using kcov, uploaded to
https://codecov.io
45. WSGI Why Rust? Project Status Performance Demo Next steps
Gitlab Pipeline
• Two stages: test + build
• Linting: rustfmt, clippy
• cargo test
• coverage report using kcov, uploaded to
https://codecov.io
• Python integration tests with tox
46. WSGI Why Rust? Project Status Performance Demo Next steps
Gitlab Pipeline
• Two stages: test + build
• Linting: rustfmt, clippy
• cargo test
• coverage report using kcov, uploaded to
https://codecov.io
• Python integration tests with tox
• build wheels
47. WSGI Why Rust? Project Status Performance Demo Next steps
Binary packages
• manylinux2010 wheels for Python 3.6-3.9
• switched from manylinux1 after stable Rust stopped supporting the old
ABI (ELF file OS ABI invalid error when loading rust shared libraries)
1.47.0
• manylinux2010 needs recent pip and setuptools versions
48. WSGI Why Rust? Project Status Performance Demo Next steps
Binary packages
• manylinux2010 wheels for Python 3.6-3.9
• switched from manylinux1 after stable Rust stopped supporting the old
ABI (ELF file OS ABI invalid error when loading rust shared libraries)
1.47.0
• manylinux2010 needs recent pip and setuptools versions
• pip >= 19.0 if pip prefers sdist over wheel (and there’s no Rust)
• setuptools >= 42.0.0 (when using zc.buildout)
49. WSGI Why Rust? Project Status Performance Demo Next steps
Binary packages
• manylinux2010 wheels for Python 3.6-3.9
• switched from manylinux1 after stable Rust stopped supporting the old
ABI (ELF file OS ABI invalid error when loading rust shared libraries)
1.47.0
• manylinux2010 needs recent pip and setuptools versions
• pip >= 19.0 if pip prefers sdist over wheel (and there’s no Rust)
• setuptools >= 42.0.0 (when using zc.buildout)
• wanted: MacOS
50. WSGI Why Rust? Project Status Performance Demo Next steps
Features
• rust-cpython based Python interface
(https://github.com/dgrunwald/rust-cpython)
• Nonblocking IO using mio (https://github.com/tokio-rs/mio)
• Nonblocking read
• blocking or nonblocking write
• Worker pool based on threadpool (https://docs.rs/threadpool); 1:1
threading
• PasteDeploy entry point
• integrates with Python logging
• asynchronous logging -> no need to hold the GIL when creating the log
message
• logging configuration in wsgi.ini
• TCP or Unix Domain sockets
• supports systemd socket activation
51. WSGI Why Rust? Project Status Performance Demo Next steps
Performance
Pierre Terre / Rabbit Hole, Monarch’s Way / CC BY-SA 2.0
• number of requests/amount of
data transferred per unit of time
• Testing and eventually
improving it
52. WSGI Why Rust? Project Status Performance Demo Next steps
Approach
• Static code analyis + refactoring
53. WSGI Why Rust? Project Status Performance Demo Next steps
Approach
• Static code analyis + refactoring
• reminder: pyruvate started as a Hello Rust project
• memory allocations are expensive
54. WSGI Why Rust? Project Status Performance Demo Next steps
Approach
• Static code analyis + refactoring
• reminder: pyruvate started as a Hello Rust project
• memory allocations are expensive
• How to induce socket blocking?
55. WSGI Why Rust? Project Status Performance Demo Next steps
Approach
• Static code analyis + refactoring
• reminder: pyruvate started as a Hello Rust project
• memory allocations are expensive
• How to induce socket blocking?
• limiting socket buffer sizes of a Vagrant box
56. WSGI Why Rust? Project Status Performance Demo Next steps
Approach
• Static code analyis + refactoring
• reminder: pyruvate started as a Hello Rust project
• memory allocations are expensive
• How to induce socket blocking?
• limiting socket buffer sizes of a Vagrant box
• Docker?
57. WSGI Why Rust? Project Status Performance Demo Next steps
Approach
• Static code analyis + refactoring
• reminder: pyruvate started as a Hello Rust project
• memory allocations are expensive
• How to induce socket blocking?
• limiting socket buffer sizes of a Vagrant box
• Docker?
• Flame graphs from perf data
(http://www.brendangregg.com/flamegraphs.html)
58. WSGI Why Rust? Project Status Performance Demo Next steps
Approach
• Static code analyis + refactoring
• reminder: pyruvate started as a Hello Rust project
• memory allocations are expensive
• How to induce socket blocking?
• limiting socket buffer sizes of a Vagrant box
• Docker?
• Flame graphs from perf data
(http://www.brendangregg.com/flamegraphs.html)
• .to_lower() is much more expensive than
.to_ascii_uppercase()
59. WSGI Why Rust? Project Status Performance Demo Next steps
Approach
• Static code analyis + refactoring
• reminder: pyruvate started as a Hello Rust project
• memory allocations are expensive
• How to induce socket blocking?
• limiting socket buffer sizes of a Vagrant box
• Docker?
• Flame graphs from perf data
(http://www.brendangregg.com/flamegraphs.html)
• .to_lower() is much more expensive than
.to_ascii_uppercase()
• load testing with siege and ab
60. WSGI Why Rust? Project Status Performance Demo Next steps
Performance: Design considerations
• Python Global Interpreter Lock: Python code can only run when holding
the GIL
• Multiple worker threads need to acquire the GIL in turn
• acquire GIL only for application execution
• drop GIL when doing IO
• more than one possible way to do this
• IO event polling
• abstraction: mio Poll instance
• accepted connections are registered for read events with a Poll instance
in the main thread
• completely read requests + connection are passed to the worker pool
• iterate over WSGI response chunks (needs GIL)
• blocking write: loop until response is completely written
• non-blocking write:
• write until EAGAIN
• register connection for write events with per worker Poll instance
• drop GIL, stash response
61. WSGI Why Rust? Project Status Performance Demo Next steps
Performance: current status
• Lenovo X390 and Vagrant (2 CPU, 2 G RAM, 8K write buffer size limit)
• faster than waitress on a Hello world WSGI application
• faster that waitress on / (looking at
https://zope.readthedocs.io/en/4.x/wsgi.html#test-criteria-for-
recommendations)
• but slower on /Plone
• more performance testing needed
62. WSGI Why Rust? Project Status Performance Demo Next steps
Live Demo
63. WSGI Why Rust? Project Status Performance Demo Next steps
Release 1.0
• Planned for end of this year
• Reuse connections (keep-alive + chunked transport)
• Branch on Gitlab, needs some work
• MacOS support wanted
• optimize pipeline
• use a kcov binary package
• async logging: thread ID
• More testing + bugfixing
64. WSGI Why Rust? Project Status Performance Demo Next steps
Thanks for your attention
• Thomas Schorr
• info@thomasschorr.de
• https://gitlab.com/tschorr/pyruvate
• https://pypi.org/project/pyruvate