-
Notifications
You must be signed in to change notification settings - Fork 5
Open
Description
Hi,
First of all thank you for this nice work!
I was trying to run two workers at the same time, but can't make the example work the way it's show on the readme.
What I have:
#[tokio::main]
async fn main() {
let pool = get_pg_pool().await;
let mut email_backend = PostgresStorage::new(&pool);
let mut reminder_backend = PostgresStorage::new(&pool);
let monitor = Monitor::new()
.on_event(|ctx, event| println!("{}: {:?}", ctx.name(), event))
.register(move |_| {
let a = WorkerBuilder::new("email-worker")
.backend(email_backend)
.build(send_email_job);
a
})
.register(move |_| {
let b = WorkerBuilder::new("reminder-worker")
.backend(reminder_backend)
.build(send_reminder);
b
});
monitor.run().await.unwrap();
}But it says:
error[E0507]: cannot move out of `reminder_backend`, a captured variable in an `Fn` closure
--> src/bin/worker.rs:22:26
|
10 | let mut reminder_backend = PostgresStorage::new(&pool);
| -------------------- --------------------------- move occurs because `reminder_backend` has type `apalis_postgres::PostgresStorage<Remind>`, which does not implement the `Copy` trait
| |
| captured outer variable
...
20 | .register(move |_| {
| -------- captured by this `Fn` closure
21 | let b = WorkerBuilder::new("reminder-worker")
22 | .backend(reminder_backend)
| ^^^^^^^^^^^^^^^^ `reminder_backend` is moved here
What works:
async fn main() {
let pool = get_pg_pool().await;
let pool_b = get_pg_pool().await;
let monitor = Monitor::new()
.on_event(|ctx, event| println!("{}: {:?}", ctx.name(), event))
.register(move |_| {
let mut email_backend = PostgresStorage::new(&pool);
let a = WorkerBuilder::new("email-worker")
.backend(email_backend)
.build(send_email_job);
a
})
.register(move |_| {
let mut reminder_backend = PostgresStorage::new(&pool_b);
let b = WorkerBuilder::new("reminder-worker")
.backend(reminder_backend)
.build(send_reminder);
b
});
monitor.run().await.unwrap();
}But it's rather ugly to duplicate the pool for each backend?
I'm sure I'm doing something wrong, but I don't see it right now
Thanks and cheers!
Frank
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels