pub struct TaskContext<S>{ /* private fields */ }Implementations§
Source§impl<S> TaskContext<S>
impl<S> TaskContext<S>
Sourcepub fn new(store: S) -> Self
pub fn new(store: S) -> Self
Creates a new TaskContext with the provided store.
Examples found in repository?
examples/basic.rs (line 18)
12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
async fn main() {
tracing_subscriber::fmt()
.with_max_level(tracing::Level::INFO)
.init();
let task_store = InMemoryTaskStore::new();
let context = TaskContext::new(task_store)
.register::<MyTask1>()
.register::<MyTask2>()
.set_concurrency("default", 10)
.start()
.await;
let mut tasks = Vec::new();
for _ in 0..100 {
tasks.push(TaskConfiguration {
inner: MyTask1::new("name1".to_string(), 32),
kind: TaskKind::Once,
delay_seconds: None,
});
}
tokio::spawn(async move {
context.add_tasks(tasks).await.unwrap();
});
tokio::time::sleep(Duration::from_secs(20)).await;
}More examples
examples/nativedb.rs (line 21)
14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42
async fn main() {
tracing_subscriber::fmt()
.with_max_level(tracing::Level::INFO)
.init();
let task_store = NativeDbTaskStore::default();
task_store.restore_tasks().await.unwrap();
let context = TaskContext::new(task_store)
.register::<MyTask1>()
.register::<MyTask2>()
.set_concurrency("default", 10)
.start().await;
let context = Arc::new(context);
let mut tasks = Vec::new();
for _ in 0..10000 {
tasks.push(TaskConfiguration {
inner: MyTask1::new("name1".to_string(), 32),
kind: TaskKind::Once,
delay_seconds: None,
});
}
tokio::spawn(async move {
context.add_tasks(tasks).await.unwrap();
});
tokio::time::sleep(Duration::from_secs(10000)).await;
}Sourcepub fn register<T>(self) -> Selfwhere
T: Task,
pub fn register<T>(self) -> Selfwhere
T: Task,
Registers a new task type in the context.
Examples found in repository?
examples/basic.rs (line 19)
12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
async fn main() {
tracing_subscriber::fmt()
.with_max_level(tracing::Level::INFO)
.init();
let task_store = InMemoryTaskStore::new();
let context = TaskContext::new(task_store)
.register::<MyTask1>()
.register::<MyTask2>()
.set_concurrency("default", 10)
.start()
.await;
let mut tasks = Vec::new();
for _ in 0..100 {
tasks.push(TaskConfiguration {
inner: MyTask1::new("name1".to_string(), 32),
kind: TaskKind::Once,
delay_seconds: None,
});
}
tokio::spawn(async move {
context.add_tasks(tasks).await.unwrap();
});
tokio::time::sleep(Duration::from_secs(20)).await;
}More examples
examples/nativedb.rs (line 22)
14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42
async fn main() {
tracing_subscriber::fmt()
.with_max_level(tracing::Level::INFO)
.init();
let task_store = NativeDbTaskStore::default();
task_store.restore_tasks().await.unwrap();
let context = TaskContext::new(task_store)
.register::<MyTask1>()
.register::<MyTask2>()
.set_concurrency("default", 10)
.start().await;
let context = Arc::new(context);
let mut tasks = Vec::new();
for _ in 0..10000 {
tasks.push(TaskConfiguration {
inner: MyTask1::new("name1".to_string(), 32),
kind: TaskKind::Once,
delay_seconds: None,
});
}
tokio::spawn(async move {
context.add_tasks(tasks).await.unwrap();
});
tokio::time::sleep(Duration::from_secs(10000)).await;
}Sourcepub fn set_concurrency(self, queue: &str, count: usize) -> Self
pub fn set_concurrency(self, queue: &str, count: usize) -> Self
Sets the concurrency level for a specified queue.
Examples found in repository?
examples/basic.rs (line 21)
12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
async fn main() {
tracing_subscriber::fmt()
.with_max_level(tracing::Level::INFO)
.init();
let task_store = InMemoryTaskStore::new();
let context = TaskContext::new(task_store)
.register::<MyTask1>()
.register::<MyTask2>()
.set_concurrency("default", 10)
.start()
.await;
let mut tasks = Vec::new();
for _ in 0..100 {
tasks.push(TaskConfiguration {
inner: MyTask1::new("name1".to_string(), 32),
kind: TaskKind::Once,
delay_seconds: None,
});
}
tokio::spawn(async move {
context.add_tasks(tasks).await.unwrap();
});
tokio::time::sleep(Duration::from_secs(20)).await;
}More examples
examples/nativedb.rs (line 24)
14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42
async fn main() {
tracing_subscriber::fmt()
.with_max_level(tracing::Level::INFO)
.init();
let task_store = NativeDbTaskStore::default();
task_store.restore_tasks().await.unwrap();
let context = TaskContext::new(task_store)
.register::<MyTask1>()
.register::<MyTask2>()
.set_concurrency("default", 10)
.start().await;
let context = Arc::new(context);
let mut tasks = Vec::new();
for _ in 0..10000 {
tasks.push(TaskConfiguration {
inner: MyTask1::new("name1".to_string(), 32),
kind: TaskKind::Once,
delay_seconds: None,
});
}
tokio::spawn(async move {
context.add_tasks(tasks).await.unwrap();
});
tokio::time::sleep(Duration::from_secs(10000)).await;
}Sourcepub async fn start(self) -> Self
pub async fn start(self) -> Self
Starts the task context, including workers and the task cleaner.
Examples found in repository?
examples/basic.rs (line 22)
12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
async fn main() {
tracing_subscriber::fmt()
.with_max_level(tracing::Level::INFO)
.init();
let task_store = InMemoryTaskStore::new();
let context = TaskContext::new(task_store)
.register::<MyTask1>()
.register::<MyTask2>()
.set_concurrency("default", 10)
.start()
.await;
let mut tasks = Vec::new();
for _ in 0..100 {
tasks.push(TaskConfiguration {
inner: MyTask1::new("name1".to_string(), 32),
kind: TaskKind::Once,
delay_seconds: None,
});
}
tokio::spawn(async move {
context.add_tasks(tasks).await.unwrap();
});
tokio::time::sleep(Duration::from_secs(20)).await;
}More examples
examples/nativedb.rs (line 25)
14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42
async fn main() {
tracing_subscriber::fmt()
.with_max_level(tracing::Level::INFO)
.init();
let task_store = NativeDbTaskStore::default();
task_store.restore_tasks().await.unwrap();
let context = TaskContext::new(task_store)
.register::<MyTask1>()
.register::<MyTask2>()
.set_concurrency("default", 10)
.start().await;
let context = Arc::new(context);
let mut tasks = Vec::new();
for _ in 0..10000 {
tasks.push(TaskConfiguration {
inner: MyTask1::new("name1".to_string(), 32),
kind: TaskKind::Once,
delay_seconds: None,
});
}
tokio::spawn(async move {
context.add_tasks(tasks).await.unwrap();
});
tokio::time::sleep(Duration::from_secs(10000)).await;
}Sourcepub async fn add_task<T>(
&self,
task: T,
kind: TaskKind,
delay_seconds: Option<u32>,
) -> Result<(), String>
pub async fn add_task<T>( &self, task: T, kind: TaskKind, delay_seconds: Option<u32>, ) -> Result<(), String>
Adds a new task to the context for execution.
Sourcepub async fn add_tasks<T>(
&self,
tasks: Vec<TaskConfiguration<T>>,
) -> Result<(), String>
pub async fn add_tasks<T>( &self, tasks: Vec<TaskConfiguration<T>>, ) -> Result<(), String>
Adds a new task to the context for execution.
Examples found in repository?
examples/basic.rs (line 34)
12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
async fn main() {
tracing_subscriber::fmt()
.with_max_level(tracing::Level::INFO)
.init();
let task_store = InMemoryTaskStore::new();
let context = TaskContext::new(task_store)
.register::<MyTask1>()
.register::<MyTask2>()
.set_concurrency("default", 10)
.start()
.await;
let mut tasks = Vec::new();
for _ in 0..100 {
tasks.push(TaskConfiguration {
inner: MyTask1::new("name1".to_string(), 32),
kind: TaskKind::Once,
delay_seconds: None,
});
}
tokio::spawn(async move {
context.add_tasks(tasks).await.unwrap();
});
tokio::time::sleep(Duration::from_secs(20)).await;
}More examples
examples/nativedb.rs (line 38)
14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42
async fn main() {
tracing_subscriber::fmt()
.with_max_level(tracing::Level::INFO)
.init();
let task_store = NativeDbTaskStore::default();
task_store.restore_tasks().await.unwrap();
let context = TaskContext::new(task_store)
.register::<MyTask1>()
.register::<MyTask2>()
.set_concurrency("default", 10)
.start().await;
let context = Arc::new(context);
let mut tasks = Vec::new();
for _ in 0..10000 {
tasks.push(TaskConfiguration {
inner: MyTask1::new("name1".to_string(), 32),
kind: TaskKind::Once,
delay_seconds: None,
});
}
tokio::spawn(async move {
context.add_tasks(tasks).await.unwrap();
});
tokio::time::sleep(Duration::from_secs(10000)).await;
}Auto Trait Implementations§
impl<S> Freeze for TaskContext<S>
impl<S> !RefUnwindSafe for TaskContext<S>
impl<S> Send for TaskContext<S>
impl<S> Sync for TaskContext<S>
impl<S> Unpin for TaskContext<S>
impl<S> !UnwindSafe for TaskContext<S>
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more