Code Monkey home page Code Monkey logo

Comments (4)

akubera avatar akubera commented on June 26, 2024

Ohh, yeah looks like get_body() was a failed experiment - bridging a non-coroutine to a coroutine.

The Problem:

In short, to speed up processing the request, the HTTP headers are read and then the middleware is processed immediately. The res.body attribute is a Future, allowing the backend to cache the (potentially large) file while the webapp is running, until the body is requested. This was the purpose of get_body(), to get the value of the future without having your function be a coroutine.
The problem is, there is no way to do that. I was trying to start a new loop, obviously it didn't like that.

The Solution:

Coroutines are supported as Growler middleware, and you're using python3.5 so it's super easy!

Make post_test asynchronous by doing something like:

@app.post('/data')
async def post_test(req, res):
    print(await req.body)
    res.send_text("OK!\n")

That should work for you (also add the res.send_text so the curl command doesn't print the 404 error).

from growler.

akubera avatar akubera commented on June 26, 2024

For python 3.4 compatibility, this works:

@app.post('/data')
@asyncio.coroutine
def post_test(req, res):
    data = yield from req.body
    print(data)
    res.send_text("OK")

I'm thrilled you think Growler can help you with your project, but please note that it is still a baby project and is missing a lot of functionality. I'd really appreciate any other questions or bugs you find.

from growler.

yalosev avatar yalosev commented on June 26, 2024

Thank you for the answer. I see that it`s baby project. I need just a few things, but with a lot of middlewares. Tbh flask middlewares are awful, while yours are look like node or golang one. Thank you one more time.

from growler.

whodes avatar whodes commented on June 26, 2024

I'm running into a similar problem, but instead of crashing I'm just waiting forever for the body to load. This happens when I post all different types of files to my POST endpoint and of various of sizes. It works quickly for smaller files but when I send pdfs and pngs that are only 320K it hangs.

from growler.

Related Issues (16)

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.