| from openhands.core.config import AppConfig
|
| from openhands.runtime.plugins import PluginRequirement
|
|
|
| DEFAULT_PYTHON_PREFIX = [
|
| '/openhands/micromamba/bin/micromamba',
|
| 'run',
|
| '-n',
|
| 'openhands',
|
| 'poetry',
|
| 'run',
|
| ]
|
|
|
|
|
| def get_action_execution_server_startup_command(
|
| server_port: int,
|
| plugins: list[PluginRequirement],
|
| app_config: AppConfig,
|
| python_prefix: list[str] = DEFAULT_PYTHON_PREFIX,
|
| use_nice_for_root: bool = True,
|
| ):
|
| sandbox_config = app_config.sandbox
|
|
|
|
|
| plugin_args = []
|
| if plugins is not None and len(plugins) > 0:
|
| plugin_args = ['--plugins'] + [plugin.name for plugin in plugins]
|
|
|
|
|
| browsergym_args = []
|
| if sandbox_config.browsergym_eval_env is not None:
|
| browsergym_args = [
|
| '--browsergym-eval-env'
|
| ] + sandbox_config.browsergym_eval_env.split(' ')
|
|
|
| is_root = not app_config.run_as_openhands
|
|
|
| base_cmd = [
|
| *python_prefix,
|
| 'python',
|
| '-u',
|
| '-m',
|
| 'openhands.runtime.action_execution_server',
|
| str(server_port),
|
| '--working-dir',
|
| app_config.workspace_mount_path_in_sandbox,
|
| *plugin_args,
|
| '--username',
|
| 'openhands' if app_config.run_as_openhands else 'root',
|
| '--user-id',
|
| str(sandbox_config.user_id),
|
| *browsergym_args,
|
| ]
|
|
|
| if is_root and use_nice_for_root:
|
|
|
| cmd_str = ' '.join(base_cmd)
|
| return [
|
| 'nice',
|
| '-n',
|
| '-20',
|
| 'sh',
|
| '-c',
|
| f'echo -1000 > /proc/self/oom_score_adj && exec {cmd_str}',
|
| ]
|
| else:
|
|
|
| return base_cmd
|
|
|