非常简单的beanstalkd客户端

pystalk的Python项目详细描述


pystalk是一个非常简单的beanstalkd客户端。它是 与Python2和Python3兼容

这个项目最初是为beancmd创建的。你也可能对这个工具感兴趣

TravisCI Build StatusReadTheDocs

要求/安装

此软件与Python2.7和3.3+一起工作。

它不支持任何异步事件循环,也没有使用gevent进行测试。它的设计很简单, 同步使用

您应该可以使用pip install pystalkPyPI安装它。

示例用法

创造就业

#!/usr/bin/pythonimportjsonfrompystalkimportBeanstalkClientclient=BeanstalkClient('10.0.0.1',11300)client.put_job(json.dumps({"foo":"bar"}),delay=30)

这将创建一个延迟30秒的作业。注意,作业的数据必须是utf-8可编码的。

在特定管道中创造就业机会

Beanstalk有一个tubes(即命名队列)的概念有几种方法可以将 使用Pystalk将作业放入特定的管中:

#!/usr/bin/pythonfrompystalkimportBeanstalkClientclient=BeanstalkClient('10.0.0.1',11300)# method 1, matches the upstream protocolclient.use("some_tube")client.put_job("some message")# method 2, using an external guard object like you would in C++ or Rustwithclient.using("some_tube")asinserter:inserter.put_job("some message")# method 3client.put_job_into("some_tube","some message")

消耗所有可用工作

下面的脚本将遍历所有当前就绪的作业,然后退出:

#!/usr/bin/pythonfrompystalkimportBeanstalkClientclient=BeanstalkClient('10.0.0.1',11300)forjobinclient.reserve_iter():try:execute_job(job)exceptException:client.release_job(job.job_id)raiseclient.delete_job(job.job_id)

注意,即使我们要求作业数据在put_job方法中是可编码的utf-8,我们也不会为您解码——在python 3.5中,输出的作业数据是一个字节字符串。如果您想将输入数据取回,应该调用.decode("utf-8")。如果您希望这种行为,请将auto_decode=True传递给BeanstalkClient构造函数;请注意,这可能会使您难以使用由不采用utf-8的其他系统注入的数据。

多个作业服务器

下面将从一组beanstalk服务器中保留作业,在它们之间进行相当的旋转。

#!/usr/bin/pythonfrommyappimportexecute_jobfrompystalkimportBeanstalkClient,BeanstalkTimedOutErrorhosts=('10.0.0.1','10.0.0.2')clients=dict((h,BeanstalkClient(h,11300))forhinhosts)i=0whileTrue:i+=1client=clients[hosts[i%len(hosts)]]try:job=client.reserve_job(1)exceptBeanstalkErrorase:ife.message=='TIMED_OUT':continueelse:raiseexecute_job(job)client.delete_job(job.job_id)

开发

很直截了当。在分支机构中开发,发送prs,在master上登陆。着陆前所有测试必须通过。

发布新版本

  1. 完成所有必要的变更
  2. setup.pypystalk/__init__.py中的版本凹凸到稳定版本(例如0.2
  3. 使用更改和新版本号更新^{}
  4. 用新版本号更新^{}
  5. 提交
  6. 标记版本(例如git tag -s pystalk-0.2
  7. 向上推至Github
  8. 使用python setup.py sdist upload
  9. 上载到pypi

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java使用Eclipse Helios for Web项目   java指定行。作为编译器设置的分隔符?   osm映射中带有osmdroid的java标记   java Android ClassNotFoundException在路径:DexPathList上未找到类   java从j2me调用GWT方法   更新到java 8后的aspectj问题   如何仅从根元素java,com提取文本内容。滴虫软件。是的。html   安卓公司。谷歌。火基。数据库DatabaseException:未能转换java类型的值。将字符串改为长字符串   从java中的方法返回arraylist变量   java如果将引用重新分配给同步块内的锁对象,会是什么?   java下载。使用spring mvc的资源文件中的xlsx文件   java Eclipse提供了什么工具来运行Eclipse中未包含的程序?   spring boot Java泛型如何读取传递给泛型方法的类型上的字段或调用方法   Javacard中的javaecdsa签名