Hi,

Please consider the following (Twisted) example code which issues 3 remote procedure calls in parallel and consumes results immediately (each
"as it comes in"):


def print_sales(sales, product):
   print("Sales {}: {}".format(product, sales))

for product in ["product2", "product3", "product5"]:
   d = session.call("com.myapp.sales_by_product", product)
   d.addCallback(print_sales, product)


Here, `session.call` returns a Twisted Deferred, and I use the ability of `addCallback` to forward extra positional and keyword arguments to the callback fired later.

[Complete motivation of this example is here: https://github.com/tavendo/AutobahnPython/blob/master/doc/WAMPv2.md#batching-calls]

Now, in asyncio, I can do:

def print_sales(future):
   sales = future.result()
   product = future.args[0]
   print("Sales {}: {}".format(product, sales))

for product in ["product2", "product3", "product5"]:
   f = session.call("com.myapp.sales_by_product", product)
   f.args = [product]
   d.add_done_callback(print_sales)

This seems to be a slight misuse (the `f.args = `).

Are there plans to make `add_done_callback` take extra positional and keyword args automatically forwarded?

Eg.

Future.add_done_callback(fn, *args, **kwargs)

and have fn called

fn(future, *args, **kwargs)

?

Thanks!
/Tobias

Reply via email to