Files
coze-studio/backend/infra/coderunner/impl/script/python_script.py
T
zgene 6bed393c12
Backend Tests / backend-unit-test (push) Has been cancelled
Backend Tests / benchmark-test (push) Has been cancelled
CI@main / Node.js v22 (ubuntu-latest) (push) Has been cancelled
Thrift Syntax Validation / validate-thrift (push) Has been cancelled
License Check / License Check (push) Has been cancelled
first commit
2026-05-14 13:29:56 +08:00

63 lines
1.5 KiB
Python

import json
import sys
import os
import asyncio
import time
import random
try:
from RestrictedPython import safe_builtins, limited_builtins, utility_builtins
except ModuleNotFoundError:
print("RestrictedPython module required, please run pip install RestrictedPython",file=sys.stderr)
sys.exit(1)
custom_builtins = safe_builtins.copy()
custom_builtins['__import__'] = __import__
custom_builtins['asyncio'] = asyncio
custom_builtins['json'] = json
custom_builtins['time'] = time
custom_builtins['random'] = random
restricted_globals = {
'__builtins__': custom_builtins,
'_utility_builtins': utility_builtins,
'_limited_builtins': limited_builtins,
'__name__': '__main__',
'dict': dict,
'list': list,
'print': print,
'set': set,
}
class Args:
def __init__(self, params):
self.params = params
DefaultCode = """
class Args:
def __init__(self, params):
self.params = params
class Output(dict):
pass
"""
async def run_main(app_code, params):
try:
complete_code = DefaultCode + app_code
locals_dict = {"args": Args(params=params)}
exec(complete_code, restricted_globals, locals_dict) # ignore_security_alert
main_func = locals_dict['main']
ret = await main_func(locals_dict['args'])
except Exception as e:
print(f"{type(e).__name__}: {str(e)}", file=sys.stderr)
sys.exit(1)
return ret
code = sys.argv[1]
result = asyncio.run(run_main(code, params=json.loads(sys.argv[2])))
print(json.dumps(result))