|
|
||
|---|---|---|
| .. | ||
| py_src/sglang_router | ||
| py_test | ||
| src | ||
| Cargo.lock | ||
| Cargo.toml | ||
| MANIFEST.in | ||
| README.md | ||
| pyproject.toml | ||
| v0.1.0.md | ||
README.md
SGLang Router
SGLang router is a standalone module implemented in Rust to achieve data parallelism across SGLang instances.
User docs
Please check https://docs.sglang.ai/router/router.html
Developer docs
Prerequisites
- Rust and Cargo installed
# Install rustup (Rust installer and version manager)
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
# Follow the installation prompts, then reload your shell
source $HOME/.cargo/env
# Verify installation
rustc --version
cargo --version
- Python with pip installed
Build Process
1. Build Rust Project
$ cargo build
2. Build Python Binding
Option A: Build and Install Wheel
- Build the wheel package:
$ pip install setuptools-rust wheel build
$ python -m build
- Install the generated wheel:
$ pip install <path-to-wheel>
If you want one handy command to do build + install for every change you make:
$ python -m build && pip install --force-reinstall dist/*.whl
Option B: Development Mode
For development purposes, you can install the package in editable mode:
Warning: Using editable python binding can suffer from performance degradation!! Please build a fresh wheel for every update if you want to test performance.
$ pip install -e .
Note: When modifying Rust code, you must rebuild the wheel for changes to take effect.
Troubleshooting
- If rust analyzer is not working in VSCode, set
rust-analyzer.linkedProjectsto the absolute path ofCargo.tomlin your repo. For example:
{
"rust-analyzer.linkedProjects": ["/workspaces/sglang/sgl-router/Cargo.toml"]
}
CI/CD Setup
The continuous integration pipeline consists of three main steps:
1. Build Wheels
- Uses
cibuildwheelto create manylinux x86_64 packages - Compatible with major Linux distributions (Ubuntu, CentOS, etc.)
- Additional configurations can be added to support other OS/architectures
- Reference: cibuildwheel documentation
2. Build Source Distribution
- Creates a source distribution containing the raw, unbuilt code
- Enables
pipto build the package from source when prebuilt wheels are unavailable
3. Publish to PyPI
- Uploads both wheels and source distribution to PyPI
The CI configuration is based on the tiktoken workflow.