Source code for bspump.file.filejsonsource
import logging
import json
from .fileabcsource import FileABCSource
L = logging.getLogger(__file__)
[docs]
class FileJSONSource(FileABCSource):
"""
Description: This file source is optimized to load even large JSONs from a file and parse that.
The loading & parsing is off-loaded to the worker thread so that it doesn't block the IO loop.
"""
[docs]
def __init__(self, app, pipeline, id=None, config=None):
"""
Description:
**Parameters**
app :
pipeline :
id : ID, default= None
ID
config : JSON, default = None
configuration file with additional information
"""
super().__init__(app, pipeline, id=id, config=config)
self.ProactorService = app.get_service("asab.ProactorService")
[docs]
async def read(self, filename, f):
"""
Description:
**Parameters**
filename :
f :
"""
await self.Pipeline.ready()
worker = self.ProactorService.execute(json.load, f)
await worker
event = worker.result()
await self.process(event, {"filename": filename})