beanstalkc Tutorial 中文版

英文原版:https://github.com/earl/beanstalkc/blob/wip-doc-rtfd/doc/tutorial.rst背景介绍:Beanstalk,一个高性能、轻量级的分布式内存队列系统。而beanstalkc是Beanstalk的一个python客户端库。开始:启动服务端beanstalkd进程来监听14711端口,可以使用下列命令:beanstalkd -l 12...
摘要由CSDN通过智能技术生成

英文原版:https://github.com/earl/beanstalkc/blob/wip-doc-rtfd/doc/tutorial.rst

背景介绍:

Beanstalk,一个高性能、轻量级的分布式内存队列系统。而beanstalkc是Beanstalk的一个python客户端库。看题主写的通俗易懂,就直接翻译过来。

开始:

启动服务端beanstalkd进程来监听14711端口,可以使用下列命令:

beanstalkd -l 127.0.0.1 -p 14711

除了安装beanstalkc外,一般你还需要装PyYAML。如果坚持不用PyYAML,你同样可以使用beanstalkc。 更多细节可见附录A部分。

我们需要import这个库并和服务端进行连接:

>>> import beanstalkc

>>> beanstalk = beanstalkc.Connection(host='localhost', port=14711)

如果我们不填host或者端口参数,会默认各自使用localhost和11300。同样有一个以s为单位的connect_timeout参数,用于决定socket将等待服务端多长时间来响应连接。如果值为None,那他将不会有timeout;如果不指定参数的话,默认是1s。

基本操作:

连接已经成功,我们往队列里面添加一个job:

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

1

或者我们reserve job

>>> job = beanstalk.reserve()

>>> job.body

'hey!'

一旦我们处理完一个job,我们就要把它标志为done。否则job一旦运行时间超过一个“time to run”周期(默认是120s)会重新进入队列。我们可以通过delete将任务标志为done:

>>> job.delete()

reserve后可能永远保持阻塞直到有job处于ready状态。如果job不是desired的,我们可以使用带timeout(以s为单位)的reserve操作,来决定我们将等待多长时间来接收这个job。如果这个reserve的timeout时间到了,它将返回None:

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

True

如果我们设置timeout为0,reserve将立即返回一个job或者None。

注意:beanstalkc需要job的body是strings,你需要将你的值转换为string。:

>>> beanstalk.put(42)

Traceback (most recent call last):

...

AssertionError: Job body must be a str instance

对于你放进body里的内容是没有限制,所以你可以使用任意二进制数据。如果你想放入一张图片,你只需要将图片转换成string。如果你想发Unicode的文本,你只需要使用unicode.encode来进行编码成一个string。

Tube的管理:

一个单独的beanstalkd server可以提供多个不同的队列,我们称之为 "tubes" in beanstalkd。通过这个命令查看所有可用的tubes:

>>> beanstalk.tubes()

['default']

一个beanstalkd客户端可以选择一个需要put job的tube,这是一个已经被客户端使用的tube,我们来查看这个客户端当前使用的tube:

>>> beanstalk.using()

'default'

除非特殊说明,默认是使用default这个tube。如果想使用一个不一样的tube:

>>> beanstalk.use('foo')

'foo'

>>> beanstalk.using()

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值