DEV Community

Cover image for Hello, Robyn!
Sanskar Jethi
Sanskar Jethi

Posted on • Edited on

Hello, Robyn!

Hi, I'm Sanskar Jethi(@sansyrox), the author and maintainer of Robyn!
This article was written in celebration of Robyn passing 100k installs on PyPi.

What is robyn?

Robyn is a fast asynchronous web Python framework with a Rust runtime. Other similar products that are available are Flask, FastAPI, Django but they need a web server of choice. However, when you create a robyn app, you do not need an external web server for production.

sansyrox/robyn - GitHub

🤔 Why another web framework?

Currently, all the other frameworks in the Python community are written only in Python, which does not allow true concurrency due to the notorious GIL and slow speed of execution. Robyn, having a Rust runtime and a coupled web server, tries to move around the GIL in many ways improving the runtime performance. While having a decoupled webserver brings along a lot of benefits, an integrated web server in Robyn allows us more control over the execution performance.

Performance Benchmarks(on a dual core machine)

You can read the detailed version on the docs website.

*Flask(Gunicorn) FastAPI(API) Django(Gunicorn) Robyn(1 process and 1 worker) Robyn(5 processes and 5 workers)*
Total: 5.5254 secs Slowest: 0.0784 secs Fastest: 0.0028 secs Average: 0.0275 secs Requests/sec: 1809.8082
total: 4.1314 secs Slowest: 0.0733 secs Fastest: 0.0027 secs Average: 0.0206 secs Requests/sec: 2420.4851
Total: 13.5070 secs Slowest: 0.3635 secs Fastest: 0.0249 secs Average: 0.0674 secs Requests/sec: 740.3558
Total: 1.8324 secs Slowest: 0.0269 secs Fastest: 0.0024 secs Average: 0.0091 secs Requests/sec: 5457.2339
Total: 1.5592 secs Slowest: 0.0211 secs Fastest: 0.0017 secs Average: 0.0078 secs Requests/sec: 6413.6480

âš¡ Current features

  • Written in Rust, btw xD
  • A multithreaded Runtime
  • Extensible
  • A simple API
  • Sync and Async Function Support
  • Dynamic URL Routing
  • Multi Core Scaling
  • WebSockets!
  • Hot Reloading
  • Middlewares
  • Community First and truly FOSS!
  • Under active development!

🔮 Future Roadmap

  • Add typing support
  • Document the process of plugin creation
  • Create some plugins(e.g. for various Database providers like PgSQL, Mongo,etc.)
  • Increase the execution speed.
  • Better documentation
  • Spend more time improving the Community and Ecosystem.

👣 A short history about robyn.

It was April of 2021 and I was in the final year of my university. My final year project deadline was approaching and like any other hard-working student, I was spending all my time scrolling reddit. During that time, Reddit's CS threads were being flooded with "Rewrite in Rust" memes. And since I was such a hardworking student, I was working on a completely unrelated project which had a flask backend.

Also, having written some backends in JavaScript from time to time, I used to really miss async methods while writing flask. That is when I told myself, you know Sanskar(yes sometimes I talk to myself in 3rd person) what would be cool: If you could create an Async Flask(I had used FastAPI at that time but it was not a regular part of my dev toolkit).

You know what would be cooler: IF IT WOULD BE WRITTEN IN RUST, BTW xD.

And this is how Robyn was born.

Acknowledgements

Thank you to all the people involved in the development of Robyn. From creating libraries over which robyn is built, to helping me out with rust queries to contributing and reviewing code. Thank you to everyone who is helping out with the project. 💖

Conclusion

We are always eager for new contributors and support. Consider starring us for increased visibility.

stars - robyn

Top comments (1)

Collapse
 
raghavdhingra profile image
Raghav Dhingra

Awesome 🔥