Skip to content

Commit

Permalink
Merge branch 'Torantulino:master' into add_website_memory
Browse files Browse the repository at this point in the history
  • Loading branch information
maiko authored Apr 14, 2023
2 parents 483abb1 + 40ed086 commit 5a60535
Showing 1 changed file with 57 additions and 46 deletions.
103 changes: 57 additions & 46 deletions scripts/execute_code.py
Original file line number Diff line number Diff line change
Expand Up @@ -19,53 +19,60 @@ def execute_python_file(file):
if not os.path.isfile(file_path):
return f"Error: File '{file}' does not exist."

try:
client = docker.from_env()

image_name = 'python:3.10'
if we_are_running_in_a_docker_container():
result = subprocess.run(f'python {file_path}', capture_output=True, encoding="utf8", shell=True)
if result.returncode == 0:
return result.stdout
else:
return f"Error: {result.stderr}"
else:
try:
client.images.get(image_name)
print(f"Image '{image_name}' found locally")
except docker.errors.ImageNotFound:
print(f"Image '{image_name}' not found locally, pulling from Docker Hub")
# Use the low-level API to stream the pull response
low_level_client = docker.APIClient()
for line in low_level_client.pull(image_name, stream=True, decode=True):
# Print the status and progress, if available
status = line.get('status')
progress = line.get('progress')
if status and progress:
print(f"{status}: {progress}")
elif status:
print(status)

# You can replace 'python:3.8' with the desired Python image/version
# You can find available Python images on Docker Hub:
# https://hub.docker.com/_/python
container = client.containers.run(
image_name,
f'python {file}',
volumes={
os.path.abspath(WORKSPACE_FOLDER): {
'bind': '/workspace',
'mode': 'ro'}},
working_dir='/workspace',
stderr=True,
stdout=True,
detach=True,
)

output = container.wait()
logs = container.logs().decode('utf-8')
container.remove()

# print(f"Execution complete. Output: {output}")
# print(f"Logs: {logs}")

return logs

except Exception as e:
return f"Error: {str(e)}"
client = docker.from_env()

image_name = 'python:3.10'
try:
client.images.get(image_name)
print(f"Image '{image_name}' found locally")
except docker.errors.ImageNotFound:
print(f"Image '{image_name}' not found locally, pulling from Docker Hub")
# Use the low-level API to stream the pull response
low_level_client = docker.APIClient()
for line in low_level_client.pull(image_name, stream=True, decode=True):
# Print the status and progress, if available
status = line.get('status')
progress = line.get('progress')
if status and progress:
print(f"{status}: {progress}")
elif status:
print(status)

# You can replace 'python:3.8' with the desired Python image/version
# You can find available Python images on Docker Hub:
# https://hub.docker.com/_/python
container = client.containers.run(
image_name,
f'python {file}',
volumes={
os.path.abspath(WORKSPACE_FOLDER): {
'bind': '/workspace',
'mode': 'ro'}},
working_dir='/workspace',
stderr=True,
stdout=True,
detach=True,
)

output = container.wait()
logs = container.logs().decode('utf-8')
container.remove()

# print(f"Execution complete. Output: {output}")
# print(f"Logs: {logs}")

return logs

except Exception as e:
return f"Error: {str(e)}"


def execute_shell(command_line):
Expand All @@ -86,3 +93,7 @@ def execute_shell(command_line):
os.chdir(current_dir)

return output


def we_are_running_in_a_docker_container():
os.path.exists('/.dockerenv')

0 comments on commit 5a60535

Please sign in to comment.