Giter Site home page Giter Site logo

Comments (5)

andrewgodwin avatar andrewgodwin commented on May 22, 2024

Yes, we should probably have this - I won't be able to add it myself for a while though as I've got bugs to fix elsewhere. Feel free to submit a PR if you want.

from asgiref.

dgilge avatar dgilge commented on May 22, 2024

Ok, fine. What about the following? (I'm not sure about the sleep times yet. And I'd actually prefer to implement queue_empty simpler...)

    async def queue_empty(self, timeout=0.1):
        if not self.output_queue.empty():
            return False
        if timeout <= 0.01:
            await asyncio.sleep(timeout)
            return self.output_queue.empty()
        await asyncio.sleep(0.01)
        if not self.output_queue.empty():
            return False
        await asyncio.sleep(timeout - 0.01)
        return self.output_queue.empty()

    async def queue_count(self, wait=0.1):
        await asyncio.sleep(wait)
        return self.output_queue.qsize()

from asgiref.

andrewgodwin avatar andrewgodwin commented on May 22, 2024

I'd just have one top-level function called communicator.receive_nothing that raises an (assertion?) error if it does receive something, that just wraps receive_from and catches the TimeoutError.

from asgiref.

dgilge avatar dgilge commented on May 22, 2024

I also thought about doing it that way. But as far as I understand the communicator is closed after this exception which is not what I want in some use cases...

from asgiref.

andrewgodwin avatar andrewgodwin commented on May 22, 2024

Ah yes, the timeout will cancel it. I still think calling it receive_nothing makes sense though, and implement inside that as you see fit (using queue empty detection is fine)

from asgiref.

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.