Skip to content

Commit e4008f2

Browse files
authored
feat: optimize robyn (#1181)
* feat: optimize robyn * fix formatting
1 parent ccfb40b commit e4008f2

File tree

5 files changed

+20
-12
lines changed

5 files changed

+20
-12
lines changed

Cargo.toml

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,9 +44,13 @@ io-uring = ["actix-web/experimental-io-uring"]
4444

4545
[profile.release]
4646
codegen-units = 1
47-
lto = true
47+
lto = "fat"
4848
panic = "abort"
4949
strip = true
50+
opt-level = 3
51+
52+
[profile.release.build-override]
53+
opt-level = 3
5054

5155
[package.metadata.maturin]
5256
name = "robyn"

src/executors/mod.rs

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,12 @@ where
3030
let function_args: PyObject = function_args
3131
.clone()
3232
.into_pyobject(py)
33-
.unwrap()
33+
.map_err(|e| {
34+
PyErr::new::<pyo3::exceptions::PyRuntimeError, _>(format!(
35+
"Failed to convert args: {:?}",
36+
e
37+
))
38+
})?
3439
.into_any()
3540
.unbind();
3641
debug!("Function args: {:?}", function_args);

src/server.rs

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -545,13 +545,11 @@ async fn index(
545545
response = match execute_middleware_function(&response, &after_middleware).await {
546546
Ok(MiddlewareReturn::Request(_)) => {
547547
error!("After middleware returned a request");
548-
return Response::internal_server_error(Some(&response.headers));
548+
return Response::internal_server_error(None);
549549
}
550550
Ok(MiddlewareReturn::Response(r)) => {
551-
let response = r;
552-
553-
debug!("Response returned: {:?}", response);
554-
response
551+
debug!("Response returned: {:?}", r);
552+
r
555553
}
556554
Err(e) => {
557555
error!(

src/types/request.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -41,9 +41,9 @@ impl<'py> IntoPyObject<'py> for Request {
4141
let body = if self.body.is_empty() {
4242
PyString::new(py, "").into_any()
4343
} else {
44-
match String::from_utf8(self.body.clone()) {
45-
Ok(s) => s.into_pyobject(py)?.into_any(),
46-
Err(_) => self.body.into_pyobject(py)?.into_any(),
44+
match std::str::from_utf8(&self.body) {
45+
Ok(s) => PyString::new(py, s).into_any(),
46+
Err(_) => PyBytes::new(py, &self.body).into_any(),
4747
}
4848
};
4949

src/types/response.rs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,8 +27,9 @@ impl Responder for Response {
2727
type Body = BoxBody;
2828

2929
fn respond_to(self, _req: &HttpRequest) -> HttpResponse<Self::Body> {
30-
let mut response_builder =
31-
HttpResponseBuilder::new(StatusCode::from_u16(self.status_code).unwrap());
30+
let mut response_builder = HttpResponseBuilder::new(
31+
StatusCode::from_u16(self.status_code).unwrap_or(StatusCode::INTERNAL_SERVER_ERROR),
32+
);
3233
apply_hashmap_headers(&mut response_builder, &self.headers);
3334
response_builder.body(self.description)
3435
}

0 commit comments

Comments
 (0)