我正在开发一个 Python 项目,我需要使用 Bazel 来管理我的构建。我想使用 Gunicorn 作为 HTTP 服务器来运行我的 Python 应用程序。我已经在我的requirements.txt 文件中添加了gunicorn 作为依赖项。但是,我不确定如何配置 Bazel 以使用 Gunicorn 作为我的应用程序的运行程序。有人可以提供有关如何设置的清晰示例或指南吗?
这是我到目前为止所拥有的:
需求.txt:
flask
gunicorn
_pip_parse(
name = "embeddings_requirements",
python_interpreter_target = interpreter,
requirements_lock = "//service:requirements.txt"
)
构建.bazel:
load("@aspect_rules_py//py:defs.bzl", "py_binary")
py_binary(
name = name,
srcs = merged_srcs,
data = merged_data,
env = binary_env,
imports = ["src", "."],
main = main,
tags = merged_tags,
toolchains = merged_toolchains,
visibility = merged_visibility,
deps = merged_deps
)
要使用 pip deps 的入口点运行任何 python 脚本,需要使用方面规则 py
中的
py_console_script_binary
规则
load("@rules_python//python/entry_points:py_console_script_binary.bzl", "py_console_script_binary")
py_console_script_binary(
name = "my_gunicorn_target",
script = script, # "gunicorn"
pkg = pkg, # requirement("gunicorn")
binary_rule = py_binary,
deps = binary_deps,
**kwargs
)