Git Product home page Git Product logo

Comments (8)

eseglem avatar eseglem commented on April 27, 2024 1

Personally I think it should only be explicit. It should be on the user to know what they are returning. They should know if you are returning text() or json(), and put it on the return. I do not thing it detracts from the usability at all. Even putting in the isinstance(response, HTTPResponse) first adds an additional call to isinstance which should not be needed at all. It gets added to every single return, meaning (based on the benchmarks) 30,000 calls to isinstance / second, which just seems like unnecessary overhead for something that should already be known by the user. And if they do not know what type it is, they can do an if before the return. Just personally it seems like an unnecessary feature when the number one purpose of the system (to me at least) is to go fast. Anything that slows the system down, even by a tiny fraction, isn't worth it to me.

I may be a bit overly concerned. Based on a bit of timeit, it may only take a 0.2% hit in performance. Which isn't really that much, but I am afraid of 100 little 0.2% hits adding up to a massive hit.

from sanic.

willwillems avatar willwillems commented on April 27, 2024 1

Maybe a bit more descriptive error message could be added to make Sanic a bit more beginner friendly? If you're coming from flask with only the current error it's kinda hard to figure out.

from sanic.

seemethere avatar seemethere commented on April 27, 2024

I like this, on another note we should also be allowed to return a dict and it automatically converts to json

from sanic.

eseglem avatar eseglem commented on April 27, 2024

I think explicit is probably better the implicit. Does this change any of the benchmarks? If it slows things at all, may not be worth it.

from sanic.

rzwiefel avatar rzwiefel commented on April 27, 2024

@eseglem From an outside opinion, I would say that you are still allowed to do it by explicitly using a HTTPResponse. And the terseness of not having to put redundant information about the response is a huge usability feature.

Also while I don't believe the two isinstance checks will slow performance, if it is a concern there could be an initial isinstance check for HTTPResponse to short circuit the other checks
(regarding #52)
if isinstance(response, HTTPResponse): pass

from sanic.

rzwiefel avatar rzwiefel commented on April 27, 2024

@eseglem Good points. I certainly can't argue with explicit over implicit. Especially with the main goal of goin' fast, anything that user can declare that the code doesn't have to compute is a definite win.

from sanic.

imbolc avatar imbolc commented on April 27, 2024

How often are you using raw text or html response vs json or template in real projects? I don't think we need any sugar foo so rare cases.

from sanic.

seemethere avatar seemethere commented on April 27, 2024

I think this one is done. Will re-open if there's a more performant way to do it.

from sanic.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    πŸ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. πŸ“ŠπŸ“ˆπŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❀️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.