Skip to content

get "DeprecationWarning: There is no current event loop" warning #1

@jcyrss

Description

@jcyrss

Run this script in Python3.10, we will get "DeprecationWarning: There is no current event loop" warning.

That's caused by

loop = asyncio.get_event_loop()

Suggest to use this

loop = asyncio.new_event_loop()
asyncio.set_event_loop(loop)

And, here

class UDPReceiver:

    @staticmethod
    def create(loop, local_addr, server, verbose):
        task = asyncio.Task(loop.create_datagram_endpoint(
            lambda: UDPReceiver(server=server, verbose=verbose),
            local_addr=local_addr, allow_broadcast=True))
        _, udpreceiver = loop.run_until_complete(task)
        return udpreceiver

It creates a Task instance without specifying event loop, that will cause it to use current running loop which does not exists at that time. It will also bring "DeprecationWarning: There is no current event loop" warning.

Suggest to change to this

class UDPReceiver:

    @staticmethod
    def create(loop, local_addr, server, verbose):
        coro = loop.create_datagram_endpoint(
            lambda: UDPReceiver(server=server, verbose=verbose),
            local_addr=local_addr, allow_broadcast=True)

        task = asyncio.Task(coro,loop=loop)

        _, udpreceiver = loop.run_until_complete(task)
        return udpreceiver

The same modification should apply to UDPSender

Metadata

Metadata

Assignees

Labels

bugSomething isn't working

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions