zoukankan      html  css  js  c++  java
  • beanstalkc简易指令说明集

    一、job的操作

    put(建立一个job)

    将一个job加入到当前tube中、然后马上设置job状态为“Ready”比如

    >>> beanstalk.put('hey!')

    注意put指令只能接受字符串、任何非字符串如整型45都是错误的、迩还可以推迟它的执行、让她的状态延迟N秒后才把状态设置为“Ready”、如

    >>> beanstalk.put('yes!', delay=1)

    还可以为该job设置一个优先级、最高优先级是0、然后数字越大优先级越低、

    >>> _ = beanstalk.put('foo', priority=42)

    >>> _ = beanstalk.put('bar', priority=21)

    >>> _ = beanstalk.put('qux', priority=21)

     

    >>> job = beanstalk.reserve() ; print job.body ; job.delete()

    bar

    >>> job = beanstalk.reserve() ; print job.body ; job.delete()

    qux

    >>> job = beanstalk.reserve() ; print job.body ; job.delete()

    foo

    release(提前放监一个job)

    如果迩使用了delay来延迟一个job、后来又反悔了、那么迩可以使用release来提前释放这个job、让它早日回归当前tube并设置为“Ready”状态、但迩不可以对非当前tube的job使用release命令、要获取非当前tube的job可以通过peek命令

    >>> beanstalk.put('yes!', delay=900)
    >>> job.release()
    >>> job.stats()['state']
    'ready'

     

    reserve(获取一个job)

    put是往tube里加入job、那么reserve指令则是从tube里取出job、默认情况下、reserve是按job的序号从小取到大、如果像上面使用put设置了job的优先级那么是按优先级高的job取值、如果优先级同等级、那么再按序号从小取到大

    >>> beanstalk.reserve(timeout=0) is None
    True

    另外reserve可以如上所示设置timeout的时间参数、如果把时间设置为0、则任何时候都直接报timeout而造成获取job失败、迩可以设置任何一个非负数作为timeout的时间、如果超过timeout的时间、那么这次的获取job的动作就会结束、等待下次再次调用reserve指令来获取job、而没有被获取的job则将置于“Ready”状态等待下次再次被reserve所调用

    delete(删除一个job)

    任何时间迩不爽这个job都可以调用delete指令来删除这个job

    >>> job.delete()

    bury(让一个job睡觉去)

    和使用delay参数不同、如果迩不使用kick把它踢醒、它将永远处于沉睡状态、但迩不可以对非当前tube的job使用bury命令、要获取非当前tube的job可以通过peek命令

    >>> job = beanstalk.reserve()
    >>> job.bury()
    >>> job.stats()['state']
    'buried'

    kick(把一个正在睡觉的job叫醒)

    默认情况下、先叫醒最早睡觉的那个job

    >>> beanstalk.kick()
    1

    这个命令还可以加个参数设置唤醒的数量、比如加上42、一次过唤醒42个job、还按照最先睡觉的那个job开始、先就是先进先出原则

    >>> beanstalk.kick(42)
    0

    peek(查找并切换成目标job)

    查找序号为3的job、也就是第三个建立的job、如果该序号不存在、那么返回空值None

    >>> job = beanstalk.peek(3)
    >>> job.body
    'yes!'

    peek_ready (查找并切换当前tube最先进入准备状态的job)

    使用beanstalk获取最早一个处于“Ready”状态的job、注意、只能获取当前tube的job

    >>> job = beanstalk.peek_ready()
    >>> job.body
    'yes!'

    类似的命令还有peek_delayed和peek_buried、都是只能在当前tube里取job的、不支持跨tube取job

    peek_delayed(查找并切换当前tube延迟时间最短的job)

    >>> beanstalk.put('o tempores', delay=120)
    4
    >>> job = beanstalk.peek_delayed()
    >>> job.stats()['state']
    'delayed'

    peek_buried(查找并切换当前tube最先睡觉的job)

    >>> beanstalk.put('o mores!')
    5
    >>> job = beanstalk.reserve()
    >>> job.bury()
     
    >>> job = beanstalk.peek_buried()
    >>> job.stats()['state']
    'buried'

    二、tube操作

    任何的job都是被置于tube中存放的、

    tubes或watching(查看所有tube)

    查看所有的tube

    >>> beanstalk.tubes()

    ['default']

    默认情况下、只存在一个tube、而这个tube的名称叫作“default”、这个管道一定会存在、不能被删除、其它的tube迩可以任意删除

    ignore(删除tube)

    迩可以使用ignore命令来删除任意非“default”的管道

    >>> beanstalk.ignore('weibo')
    1

    use或watch(添加或者切换一个tube)

    迩可以使用use或watch来添加或者切换一个tube、如果tube名称不存在、则创建一个同名tube、如果存在就切换到该tube下

    >>> beanstalk.use('foo')
    'foo'

    using(查看当前使用的tube)

     

    迩可以使用using来查看当前使用的tube是什么

    >>> beanstalk.using()
    'default'

    三、关闭beanstalk连接

    >>> beanstalk.close()

    参考文档:http://www.slideshare.net/hitkidnil/beanstalk-protocol

    参考文档:https://github.com/earl/beanstalkc/blob/master/TUTORIAL.mkd

  • 相关阅读:
    (转)classload和class.forname()区别
    (转)HashMap和HashTable源码
    (转)spring 框架介绍
    [Spring入门学习笔记][创建网站URL]
    [spring入门学习笔记][spring的IoC原理]
    [J2EE学习][post,get乱码处理]
    [J2EE框架][Debug]
    [SQL学习笔记][用exists代替全称量词 ]
    [Spring入门学习笔记][Spring Boot]
    [Spring入门学习笔记][maven]
  • 原文地址:https://www.cnblogs.com/klobohyz/p/2284406.html
Copyright © 2011-2022 走看看