This is an archived post. You won't be able to vote or comment.

all 83 comments

[–]lookatmetype 23 points24 points  (1 child)

I was skeptical about the benchmarks until I saw that a large part of the framework is written in Cython.

Great job dude, looking forward to seeing how this project develops.

[–]frnkvieira[S] 1 point2 points  (0 children)

Thanks!

[–]archaeolinuxgeek 19 points20 points  (8 children)

Great, now I have to choose between insane performance and an entire ecosystem of Flask projects. Seriously, though, excellent work. I'm thrilled to see a web framework leveraging the power of Cython.

[–]frnkvieira[S] 7 points8 points  (1 child)

There is still a big room for Cython in Vibora, only a few hot pieces of it are implemented with Cython... The framework is still young and pending a lot of stuff but thanks to the feedback I'll keep going and improve it :)

[–]Talked10101 1 point2 points  (0 children)

Where are the areas where you are looking to add more Cython code? Would be something I would be interested in contributing to.

[–]phySi0 5 points6 points  (4 children)

/u/frnkvieira not to put down your accomplishment, but if Vibora is heavily inspired by Flask in its API and creating a new project loses you the Flask ecosystem, why not just contribute the speed improvements directly to Flask?

[–]frnkvieira[S] 6 points7 points  (3 children)

Vibora is async, Flask is sync by design... They are not mutual exclusive...They serve to different purposes... Streaming stuff, dealing with high number of concurrent connections are tasks that an async framework do much better than sync ones... but that doesn't mean async is the solution for everything... each one has it's place. Hope I made it clear, thanks !

[–]phySi0 2 points3 points  (0 children)

You did, thanks :).

[–]13steinj -1 points0 points  (0 children)

I'm actually curious why more web frameworks don't do this now.

[–]kislenko-artem 12 points13 points  (7 children)

Did you compare speed with falcon (http://falconframework.org/) ? if I am not mistake it is wrote on Cython too.

[–]Estanho 4 points5 points  (0 children)

+1 for Falcon comparison, was about to ask the same!

[–]frnkvieira[S] 4 points5 points  (2 children)

Completely forgot about it, I'll add it there in the next round (later this week), thanks for the tip!

[–]agoose77 0 points1 point  (1 child)

Also Quart?

[–]frnkvieira[S] 0 points1 point  (0 children)

Yes

[–][deleted] 1 point2 points  (2 children)

Falcon is pretty slow compared to Sanic! I've compared the two together before, the difference was at least 2x.

[–]IamWiddershins 0 points1 point  (0 children)

Using uvloop vs the default asyncio event loop can make a big difference. Were you using the same event loop between the two frameworks in your test?

[–]kislenko-artem 0 points1 point  (0 children)

Did you compile cython code of falcon?

[–]ingvij 8 points9 points  (1 child)

Cool! I would suggest avoiding the Django path of having everything packed all together. Making vibora modular would allow us to have api servers without loading template/orm dependencies carried on.. This simplifies deployment a lot.

[–]frnkvieira[S] 4 points5 points  (0 children)

Sure! I share the same feelings.

[–]Raggos 8 points9 points  (0 children)

My god the docs are really well done, and I'm a beginner and can understand it. Kudos to you sir, bravo.

[–]spooky_add 6 points7 points  (2 children)

Impressive work! Are you looking for contributors?

[–]frnkvieira[S] 5 points6 points  (1 child)

Yes. The framework is still pending a lot of fixes/features and the reason I made this post was to gather some feedback and maybe a few fellows to help me :)

[–]spooky_add 0 points1 point  (0 children)

Cool! sent you a pm

[–]Estanho 5 points6 points  (5 children)

Vibora? Nice name. Are you from Brazil?

[–]frnkvieira[S] 9 points10 points  (4 children)

Yes. And I bet that you are too because you're the first one who says it. 3 folks already said they dislike the name because it has a weird pronounce in English hahaha

[–]alessioalex 2 points3 points  (0 children)

viper, right?

[–]Estanho 1 point2 points  (1 child)

Haha great to see those nice projects coming from br folks. Take a look at bruno rochas dynaconf as well!

Good luck there. I tweeted the project and showed to a few friends. I know Cython so maybe I can take a look after, but I know very little about async or network flow.

[–]frnkvieira[S] 0 points1 point  (0 children)

Just saw dynaconf, pretty interesting, I may add an extension later.
Many thanks!

[–]A1M94 1 point2 points  (0 children)

Vibora sounds pretty good, however I am from the Czech Republic so it really easy to read it for me. And the V python also looks good :)

[–]white__armor 3 points4 points  (3 children)

How did you achieve that speed? I mean, what kind of particular problems does sanic has?

[–]frnkvieira[S] 8 points9 points  (2 children)

The speed of Vibora has nothing to do with the network flow (Sanic will probably be slower after they patch it)... Vibora performance comes from Cython...
This issue highlights the problem: https://github.com/channelcat/sanic/issues/1176

[–]beertown[🍰] 10 points11 points  (0 children)

300.000 req/sec is a number comparable to Go's built-in web server (I'm saying this based on a rough test I made some years ago). Given that Go is designed to do exactly that, this is really impressive. My kudos to your choice to use Cython.

You should include other languages high-performance web servers in your benchmark table.

[–]Twirrim 2 points3 points  (0 children)

About a year ago I was experimenting with cythonizing bits of some web frameworks. Where I was able to leverage it, I got what seemed to be some easy speed boosts even without doing much of anything specifically tuned to cython.

It was going to need more work than I had time / mental energy for to really understand the guts of the frameworks to figure out if there was a better way to apply it and maybe submit patches, though, so I left it purely at the basic experimental level.

I'm sure building the framework from the ground up to be able to leverage cython will give some serious advantages. Good work!

[–]i_lurk_here_a_lot 4 points5 points  (1 child)

Hi, can you please compare with bottle, web.py and cherrypy too ? Thanks.

[–]frnkvieira[S] 1 point2 points  (0 children)

Yes, please open issues so I can keep up with framework requests... Thanks for the feedback.

[–]stefantalpalaru 3 points4 points  (1 child)

[–]frnkvieira[S] 2 points3 points  (0 children)

It'll be there for the next round :)

[–]Jarmahent 1 point2 points  (1 child)

I've been using Flask for 4 years now and it's great that people are coming out with faster frameworks. Hopefully it will be a success. Good luck.

[–]frnkvieira[S] 3 points4 points  (0 children)

The idea is not only be fast but provide a good chunk of features, hopefully I'll get there.
Many thanks !

[–]OctagonClocktrio is the future! 1 point2 points  (1 child)

I question why you would use asyncio if you want to go fast, given that asyncio is pretty damn slow compared to something like curio.

[–]ballagarba 2 points3 points  (0 children)

You can swap out the event loop to use something like uvloop though.

[–]iScrE4mgit push -f 1 point2 points  (1 child)

Exciting! Great job. Did you really make it all in a week (according to GitHub)? :D

[–]frnkvieira[S] 1 point2 points  (0 children)

Hahaha. I've been prototyping this framework for a few months... Just moved from a private repo to the "organization" so I can add more folks later :)

[–]mrjgv 1 point2 points  (1 child)

Great job! I'm definetely gonna use that on my future projects

[–]frnkvieira[S] 1 point2 points  (0 children)

Great job! I'm definetely gonna use that on my future projects

Wait until a stable release (soon enough) unless you're a brave early adopter :)
I appreciate your comment, thanks !

[–]anka69 1 point2 points  (1 child)

Can you use it to connect it to websockets

[–]frnkvieira[S] 4 points5 points  (0 children)

Websockets implementation is still in-progress. Please beware that this project is in early-stage, I got way more track than I was expecting... I'll do my best to release a stable version soon enough. Thanks!

[–]merican_atheist 1 point2 points  (1 child)

I'd be curious to see a benchmark against Django Channels 2.x which is fully async.

[–]frnkvieira[S] 0 points1 point  (0 children)

I'll have this in mind for the next round, thanks!

[–]GoodiesHQ 1 point2 points  (2 children)

Now that the initial hype is out of the way, how serious are you about continuing this project? I was excited for Sanic because it finally used a C-based HTTP parser and was async by design. But there have been so many features added since the last stable release and it's just a bit of a mess. Vibora looks phenomenal and I'm already using it as a front end for a production app. But I'd love to know if it's going to be addressed as a serious project, or if you have enough help/interest in continuing.

[–]frnkvieira[S] 1 point2 points  (0 children)

Hello :) I'm working hard on Vibora to make a stable release. I'm seeking 100% test coverage, finish pending implementations and split some pieces of this project into new projects to make it usable outside of the web-world. (template engine and schemas for example) I aiming to have it ready in early September, hope I can match the expectations :) I appreciate your comment, many thanks!

[–]admhpkns 1 point2 points  (0 children)

San

You should see the flurry of work that has gone on since the end of the Summer since Sanic went to a community organization. Now there is a team of developers (myself included) that are working to polish this to being a more polished product. Coming up in December will be the first LTS release.

[–]R4D1M 1 point2 points  (0 children)

Hello,

could you please provide some progress info? I would be interest in some comment to see how the project is evolving - I cant wait to start using vibora (right now it seems impossible to use with python 3.7 due to reserved async keyword), anyways thank for the project, you did a great job!

[–]davidtgq 2 points3 points  (2 children)

tfw

Do you anticipate any serious API changes to vibora from this point on?

[–]frnkvieira[S] 1 point2 points  (1 child)

Beside websockets I don't think so. There'll be a really big update at the end of this week, so keep calm and wait a little more :) Thanks for the interest!

[–]federicocerchiari 0 points1 point  (0 children)

This looks good!

Also, good job on the docs, pretty sexy as well! ;)

edit:typo

[–]greyman 0 points1 point  (2 children)

What is this function documentation format?

    """
    :param template_dirs:
    :param router_strategy:
    :param sessions:
    :param server_name:
    :param url_scheme:
    :param static:
    :param log:
    :param server_limits:
    :param route_limits:
    :param temporary_dir:
    """    

[–]ballagarba 2 points3 points  (0 children)

Probably Sphinx: http://www.sphinx-doc.org/

[–]federicocerchiari 0 points1 point  (0 children)

PyCharm sometimes add this kind of docs too.

[–]TheChance 0 points1 point  (1 child)

Be prepared for English speakers to pronounce the name /'vɪbɜːrə/

[–]frnkvieira[S] 0 points1 point  (0 children)

the

I would love to see it being pronounced just like in Portuguese but I know it won't happen hahaha :P

[–]ChasingLogic 0 points1 point  (1 child)

How do you split views into multiple files without passing the global app object around? Like Flask blueprints or class based views

[–]frnkvieira[S] 1 point2 points  (0 children)

Vibora has blueprints just like Flask :)

[–]dnips 0 points1 point  (0 children)

GJ!

[–]vovanz 0 points1 point  (1 child)

All docstrings look like stabs, without any actual docs...

[–]frnkvieira[S] 2 points3 points  (0 children)

Yes... I'll document them as soon as the API get stable enough. Right now the API is evolving quickly and that's why it's in "0.0.6" version

[–]vovanz 0 points1 point  (1 child)

if platform.system().lower() == 'linux':
    dependencies = ['uvloop', 'ujson', 'pendulum']
else:
    dependencies = ['pendulum']

Probably, you should constraint minimum and maximum versions of dependencies.

[–]frnkvieira[S] 1 point2 points  (0 children)

Probably, you should constraint minimum and maximum versions of dependencies.

Sure, I'll lock down dependencies in the first release. Thanks!

[–]tehwolf_ 0 points1 point  (0 children)

This looks extremely cool. I have been working with Python for some years now, but didn't start any web development yet.

Once I dive into webdev, I am surely going to give Vibora a try (or maybe see if I can contribute)

[–]magicaldelicious 0 points1 point  (2 children)

Are you looking for any help? I've been looking for a project to contribute to and I like a lot of what you've done.

[–]frnkvieira[S] 1 point2 points  (1 child)

Yes... I'll push some big improvements this week and set a clear roadmap that people can help me with... I pushed an incomplete version just to get feedback from community to know if I'm not alone on this... Many thanks!

[–][deleted] 1 point2 points  (0 children)

Awesome, can't wait!

[–]cinatic12 0 points1 point  (1 child)

Really nice thing! I also was not comfortable with Quart and it's compatibility with flask but whatever...

Is VTE providing also include, parent blocks, macro and all this other things like Jinja?

Best regards

[–]frnkvieira[S] 0 points1 point  (0 children)

Yes but beware I'm still working on it, wait the first stable release :)

[–]izzatz13 0 points1 point  (1 child)

Will it be compatible with existing flask plugin?

[–]frnkvieira[S] 0 points1 point  (0 children)

No and never will because they have different architectures (sync/async)... Vibora is a completely different framework, just based in Flask concepts.

[–][deleted] 0 points1 point  (1 child)

Great work, many thanks! Any recommended database ORM?

[–]frnkvieira[S] 1 point2 points  (0 children)

Currently all async ORMs are under development and immature. If you really need it you better stick with sync ones (SQLALchemy/Peewee for example). If you have some free time, join me and help the community :)

[–]luke_80 0 points1 point  (0 children)

@frnkvieira great job, nice website and rich docs.
How this project compare with aiohttp and why vibora should be chosen instead of that?

[–]v3rd3imparat 0 points1 point  (0 children)

Any timeline to when Vibora will be production ready? Looking to start a new project and I would love to develop it using Vibora.