I just learned that param supports async execution like in the example below:
import param, asyncio, aiohttp
from tornado.ioloop import IOLoop
param.parameterized.async_executor = IOLoop.current().add_callback
class Downloader(param.Parameterized):
url = param.String()
results = param.List()
def __init__(self, **params):
super().__init__(**params)
self.param.watch(self.fetch, ['url'])
async def fetch(self, event):
async with aiohttp.ClientSession() as session:
async with session.get(event.new) as response:
img = await response.read()
self.results.append((event.new, img))
f = Downloader()
n = 7
for index in range(n):
f.url = f"https://picsum.photos/800/300?image={index}"
f.results # will update gradually
Is there a way to set dask (in async mode or with futures) as the default executor?