The socket should be closed automatically when the GC picks it up for being out of scope, but: explicit is better than implicit. I'll close it myself. Thanks.

As far as I'm aware, UDP packets shouldn't block on `send()` since it's not a connection oriented protocol (excepting strange cases like the OS network buffer being full). I'm happy to be corrected, however.

If we need to prevent that from blocking (and can happily abandon an already-unreliable UDP packet), doing

    sock.setblocking(False)
    try:
        # sending code here
    except socket.error as e:
        if e.args[0] in (errno.EAGAIN, errno.EWOULDBLOCK):
            pass
        else:
            raise