On Tue, May 21, 2013 at 2:38 AM, Keith Rarick <[email protected]> wrote:
> On Mon, May 20, 2013 at 5:05 AM, Abishek.R Srikaanth
> <[email protected]> wrote:
>> Can I use beanstalkd to queue up tasks that can be executed at a specific
>> time during the day?
>
> Yes, but I wouldn't recommend it.
>
> You can approximate it by subtracting the current time
> from the time you want and adding a delay for that duration.
> But there's no guarantee the job will start on time; you must
> make sure there are workers working at the right time and
> that no other jobs are ahead in line keeping them busy.
>
> The general meaning of beanstalkd's delay is to wait *at
> least* the specified amount of time.

Forgive me for jumping in this thread, but I had a similar use case in
mind that could be solved by Beanstalkd and I would like to ask your
opinion.

I have to perform a task for each user (of which I have thousands) in
a weekly basis, but at a different time for each user, based on each
user's subscription time for example. Also each task can fail and
should be retried with a policy that can be dynamic. So I made a proof
of concept in which when a user subscribed I insert a job in
beanstalkd with a week delay. Then n workers will listen for jobs, get
one, make a try and if it fails return it to the queue with a
calculated delay (5 minutes or 1 day, for example).

Do you think this fits correctly? In my case I'm not really concerned
with being accurate to the second in processing the job, I just need
that it's run approximately one week after the previous one.

There's also a concern in that I would like to be able to check every
once in a while that all users have a corresponding job in the queue,
that I'm not sure how to do. Is there a way to do this in beanstalkd,
or should I use an external database and run checks against this
external data. I wouldn't want this since the only way to do that
would be to check that a user wasn't updated for more than a week,
which could mean that I lose an event for some potentially relevant
period of time.

Thanks,

Jesus.

-- 
You received this message because you are subscribed to the Google Groups 
"beanstalk-talk" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/beanstalk-talk?hl=en.
For more options, visit https://groups.google.com/groups/opt_out.


Reply via email to