我正在寻找一种方法来改变运行时我的python脚本输出的文本颜色.基本想法是这样的:
if (Data < LowerLimit):
print "Failed" # Output Failed as Red Text
elif (Data > UpperLimit):
print "Failed" # Red Color
else:
print "Passed" # Blue Color
Run Code Online (Sandbox Code Playgroud)
这些脚本正在Windows机器上用于快速数据分析.
我定义了一个路由和一个端点函数。我还注入了一些依赖项。
pub fn route1() -> BoxedFilter<(String, ParamType)> {
warp::get()
.and(warp::path::param())
.and(warp::filters::query::query())
.and(warp::path::end())
.boxed()
}
pub async fn handler1(
query: String,
param: ParamType,
dependency: DependencyType,
) -> Result<impl warp::Reply, warp::Rejection> {
}
Run Code Online (Sandbox Code Playgroud)
let api = api::routes::route1()
.and(warp::any().map(move || dependency))
.and_then(api::hanlders::hander1);
Run Code Online (Sandbox Code Playgroud)
这一切似乎工作正常。
但是,我希望能够在多个端点前面放置一些东西,以检查查询参数中的有效键。在里面handler1
我可以添加:
if !param.key_valid {
return Ok(warp::reply::with_status(
warp::reply::json(&""),
StatusCode::BAD_REQUEST,
));
}
Run Code Online (Sandbox Code Playgroud)
我不想将它单独添加到每个处理程序中。
似乎我应该能够通过 来做到这一点filter
,但我无法弄清楚。我试过使用.map()
但随后返回多个项目将其转换为一个元组,我必须更改我的下游函数签名。理想情况下,我想找到一种方法来添加验证或其他过滤器,这些过滤器可以在没有任何下游值了解它们的情况下拒绝请求。
我发现的是ClientBuilder
有一个选项可以设置每个主机的最大空闲连接数,但这似乎并没有对可用连接数给出总体限制。
如何将依赖项注入 Warp 中的路由处理程序?一个简单的例子如下。我有一个路由,我想提供一个在启动时确定的静态值,但过滤器将值传递给最终处理程序。如何在不创建全局变量的情况下传递额外数据?这对于依赖注入很有用。
pub fn root_route() -> BoxedFilter<()> {
warp::get().and(warp::path::end()).boxed()
}
pub async fn root_handler(git_sha: String) -> Result<impl warp::Reply, warp::Rejection> {
Ok(warp::reply::json(
json!({
"sha": git_sha
})
.as_object()
.unwrap(),
))
}
#[tokio::main]
async fn main() {
let git_sha = "1234567890".to_string();
let api = root_route().and_then(root_handler);
warp::serve(api).run(([0,0,0,0], 8080)).await;
}
Run Code Online (Sandbox Code Playgroud)