pub struct PeriodicTask { /* private fields */ }Implementations§
Source§impl PeriodicTask
impl PeriodicTask
Sourcepub fn new(name: &str) -> Self
pub fn new(name: &str) -> Self
Creates a new instance of PeriodicTask.
§Arguments
name: A string slice that holds the name of the task.
§Returns
Returns a new instance of PeriodicTask.
Examples found in repository?
examples/periodic.rs (line 27)
6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
async fn main() {
tracing_subscriber::fmt()
.with_max_level(tracing::Level::INFO)
.init();
#[derive(Debug)]
struct Test {
pub name: String,
pub age: u32,
}
let param = Arc::new(Test {
name: "this is a test name".to_string(),
age: 34,
});
let task = Arc::new(move |param: Option<Arc<Test>>| {
Box::pin(async move {
println!("this is periodic task. param={:#?}", param.unwrap());
Ok(())
})
});
let periodic_task = Arc::new(PeriodicTask::new("periodic example"));
periodic_task.start_with_signal(task, Some(param), Duration::from_secs(2));
tokio::time::sleep(Duration::from_secs(10 * 60)).await;
}Sourcepub async fn shutdown(self: Arc<Self>)
pub async fn shutdown(self: Arc<Self>)
Sends a shutdown signal to the task.
This method notifies the task to stop executing.
Sourcepub fn start_with_signal<F, P>(
self: Arc<Self>,
task: Arc<dyn Fn(Option<Arc<P>>) -> F + Send + Sync>,
param: Option<Arc<P>>,
interval: Duration,
)
pub fn start_with_signal<F, P>( self: Arc<Self>, task: Arc<dyn Fn(Option<Arc<P>>) -> F + Send + Sync>, param: Option<Arc<P>>, interval: Duration, )
Starts the periodic task and sets up a signal handler for shutdown.
§Arguments
task: AnArcof a function that returns a future to be executed periodically.interval: ADurationspecifying how often the task should run.
§Type Parameters
F: The type of the future returned by the task function.
§Requirements
The future must output a Result with a unit value or a BoxError on failure.
Examples found in repository?
examples/periodic.rs (line 28)
6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
async fn main() {
tracing_subscriber::fmt()
.with_max_level(tracing::Level::INFO)
.init();
#[derive(Debug)]
struct Test {
pub name: String,
pub age: u32,
}
let param = Arc::new(Test {
name: "this is a test name".to_string(),
age: 34,
});
let task = Arc::new(move |param: Option<Arc<Test>>| {
Box::pin(async move {
println!("this is periodic task. param={:#?}", param.unwrap());
Ok(())
})
});
let periodic_task = Arc::new(PeriodicTask::new("periodic example"));
periodic_task.start_with_signal(task, Some(param), Duration::from_secs(2));
tokio::time::sleep(Duration::from_secs(10 * 60)).await;
}Trait Implementations§
Source§impl Default for PeriodicTask
impl Default for PeriodicTask
Source§fn default() -> PeriodicTask
fn default() -> PeriodicTask
Returns the “default value” for a type. Read more
Auto Trait Implementations§
impl Freeze for PeriodicTask
impl !RefUnwindSafe for PeriodicTask
impl Send for PeriodicTask
impl Sync for PeriodicTask
impl Unpin for PeriodicTask
impl !UnwindSafe for PeriodicTask
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