Would you mind avoiding the use of kwargs.get() as a short-cut to putting the keyword argument in scan_forever?  A user should't have to look into the implementation of scan_forever (or its docstring) to see that it accepts process_once_now as a parameter.  I see this happening all over our code base and it serves mostly to make debugging more difficult and code more opaque.  At some point we'll want to autogenerate documentation, which will also be less useful if we've buried keyword parameters in the body of the function.

Note that you can mix *args and **kwargs with positional arguments and keyword arguments and that, in fact, that is the intended usage.  In this case a better signature would be:

    def scan_forever(queue, process_once_now=True, *args, **kwargs)

as this is explicit regarding the scan_forever-specific parameter (process_once_now) while also allowing additional parameters to be passed through to scan.