Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Code Block
...
def post_fork(server, worker):
    import python_agent.init
...

Uvicorn ASGI

Uvicorn does not support importing module to be run before the app is started (as in uwsgi).
in order to overcome this there is a code change need to be done at the source code in order to init Sealights when Uvicorn is loading

Code Block
...
# Check for an environment variable and import accordingly
if os.getenv('ENABLE_SEALIGHTS', 'false') == 'true':
    import python_agent.init
...

Running the app:

Code Block
export ENABLE_SEALIGHTS=true
uvicorn app:APP --host 0.0.0.0 --port 9092 --workers 1 --reload
Expand
titleSample code for dynamic update of files

If you don’t want to update your source code, you may evaluate adding these few script lines (or equivalent) in your CI/CD. Usage: ./myscript.sh mypythonfile.py

Code Block
languagebash
#!/bin/bash

[[ $1 == *.py && -f $1 ]] || { echo "Error: Provide a valid Python file (.py)"; exit 1; }

# Lines to add as an environment variable
LINES_TO_ADD=$(cat <<'EOF'
# Check for an environment variable and import accordingly
if os.getenv('ENABLE_SEALIGHTS', 'false') == 'true':
    import python_agent.init
EOF
)

# Create a backup and modify the file
cp "$1" "$1.bak" && sed -i "/^import\|^from /a\\$LINES_TO_ADD" "$1" && echo "[Sealights] Lines inserted into $1, backup created at $1.bak."

Other servers (Generic solution)

...

Code Block
sl-python run {--cov-report /path/to/report.xml --labid Lab1} python <your server and args...>

...