mirror of
https://github.com/denoland/deno.git
synced 2024-12-22 07:14:47 -05:00
feat(runtime): Provide environment-configurable options for tokio parameters (#19173)
This commit is contained in:
parent
c2995893be
commit
8724ba9d08
1 changed files with 30 additions and 0 deletions
|
@ -1,11 +1,41 @@
|
|||
// Copyright 2018-2023 the Deno authors. All rights reserved. MIT license.
|
||||
use std::fmt::Debug;
|
||||
use std::str::FromStr;
|
||||
|
||||
use deno_core::task::MaskFutureAsSend;
|
||||
|
||||
/// Default configuration for tokio. In the future, this method may have different defaults
|
||||
/// depending on the platform and/or CPU layout.
|
||||
const fn tokio_configuration() -> (u32, u32, usize) {
|
||||
(61, 31, 1024)
|
||||
}
|
||||
|
||||
fn tokio_env<T: FromStr>(name: &'static str, default: T) -> T
|
||||
where
|
||||
<T as FromStr>::Err: Debug,
|
||||
{
|
||||
match std::env::var(name) {
|
||||
Ok(value) => value.parse().unwrap(),
|
||||
Err(_) => default,
|
||||
}
|
||||
}
|
||||
|
||||
pub fn create_basic_runtime() -> tokio::runtime::Runtime {
|
||||
let (event_interval, global_queue_interval, max_io_events_per_tick) =
|
||||
tokio_configuration();
|
||||
|
||||
tokio::runtime::Builder::new_current_thread()
|
||||
.enable_io()
|
||||
.enable_time()
|
||||
.event_interval(tokio_env("DENO_TOKIO_EVENT_INTERVAL", event_interval))
|
||||
.global_queue_interval(tokio_env(
|
||||
"DENO_TOKIO_GLOBAL_QUEUE_INTERVAL",
|
||||
global_queue_interval,
|
||||
))
|
||||
.max_io_events_per_tick(tokio_env(
|
||||
"DENO_TOKIO_MAX_IO_EVENTS_PER_TICK",
|
||||
max_io_events_per_tick,
|
||||
))
|
||||
// This limits the number of threads for blocking operations (like for
|
||||
// synchronous fs ops) or CPU bound tasks like when we run dprint in
|
||||
// parallel for deno fmt.
|
||||
|
|
Loading…
Reference in a new issue