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