17 lines
968 B
Python
17 lines
968 B
Python
"""JSONL worker host. Factory is deployment code, never read from model output."""
|
|
import argparse,importlib,json,sys,contextlib
|
|
|
|
def main():
|
|
p=argparse.ArgumentParser();p.add_argument('--factory',required=True);p.add_argument('--config',required=True);a=p.parse_args()
|
|
module,name=a.factory.split(':',1)
|
|
with open(a.config) as f:config=json.load(f)
|
|
wire=sys.stdout
|
|
with contextlib.redirect_stdout(sys.stderr):engine=getattr(importlib.import_module(module),name)(config)
|
|
for line in sys.stdin:
|
|
if len(line)>262144:raise ValueError('input too large')
|
|
request=json.loads(line)
|
|
with contextlib.redirect_stdout(sys.stderr):raw={'ready':True} if request.get('capability')=='__health__' else engine(request)
|
|
if not isinstance(raw,str):raw=json.dumps(raw,ensure_ascii=False,allow_nan=False)
|
|
wire.write(json.dumps({'raw':raw},ensure_ascii=False,allow_nan=False)+'\n');wire.flush()
|
|
if __name__=='__main__':main()
|