python_worker.py 791 B

12345678910111213141516171819202122232425
  1. """Agent Python 子进程入口;宿主在启动前施加文件与网络沙箱。"""
  2. import os
  3. from pathlib import Path
  4. import resource
  5. import runpy
  6. import sys
  7. def main():
  8. script, timeout, memory_mb, *arguments = sys.argv[1:]
  9. seconds = int(timeout)
  10. resource.setrlimit(resource.RLIMIT_CPU, (seconds, seconds + 1))
  11. resource.setrlimit(resource.RLIMIT_FSIZE, (64 * 1024 * 1024,) * 2)
  12. resource.setrlimit(resource.RLIMIT_NOFILE, (128, 128))
  13. if sys.platform.startswith('linux'):
  14. limit = int(memory_mb) * 1024 * 1024
  15. resource.setrlimit(resource.RLIMIT_AS, (limit, limit))
  16. sys.path.insert(0, str(Path.cwd()))
  17. sys.argv = [script, *arguments]
  18. os.umask(0o077)
  19. runpy.run_path(script, run_name='__main__')
  20. if __name__ == '__main__':
  21. main()