Skip to content

beanstalk使用经验 #6

Description

@lotusdeng

循环任务

beanstalk支持延迟任务,put任务时制定delay时间,当这个时间到时该任务才会变成ready,就可以被worker处理,如果要实现循环任务,有两种方法:

  • 任务里定时任务的标志以及定时时间,当worker处理任务时,检查到定时标志,先release with delay该任务,再处理任务,这种队列里就继续存在一个delay任务
  • 专门创建一个存放循环任务的队列,一个特制的worker处理该队列的任务,该worker处理任务时,release with delay该任务,再put一个一般任务到业务队列,业务队列的worker就不管定时重置,只是处理任务

取消任务

业务上创建一个任务时,可以被取消,通过put创建任务返回的job.id需被存储,到时根据该job.id delete队列里对应的任务,如果该任务还是ready状态,那任务直接被delete;如果该任务是reserve状态,有worker正在处理时,考虑到取消任务业务,worker需要在处理任务时周期性的touch改job,如果touch返回not_found,worker需要直接中断任务处理、同时做些清理工作,如删除已经写入到数据库中的某些记录、delete一些子任务。

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions