首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >运行基本python时出错-gearman示例

运行基本python时出错-gearman示例
EN

Stack Overflow用户
提问于 2012-10-31 20:00:39
回答 2查看 913关注 0票数 1

我正在尝试使用python-gearman库运行一个基本的gearman示例,该库可用here。我运行的是python 2.7.3

工人:

代码语言:javascript
复制
import gearman

gm_worker = gearman.GearmanWorker(['localhost:4730'])

def task_listener_reverse(gearman_worker, gearman_job):
    print 'reporting status'
    return reversed(gearman_job.data)

gm_worker.set_client_id('testclient')
gm_worker.register_task('reverse', task_listener_reverse)
gm_worker.work()

客户端:

代码语言:javascript
复制
import gearman

gm_client = gearman.GearmanClient(['localhost:4730'])
print 'Sending job...'
request = gm_client.submit_job('reverse', 'Hello World!')
print "Result: " + request.result

我收到以下错误(完整跟踪可用here)

代码语言:javascript
复制
File "/Users/developer/gearman/connection_manager.py", line 27, in _enforce_byte_string
    raise TypeError("Expecting byte string, got %r" % type(given_object))
TypeError: Expecting byte string, got <type 'reversed'>

任何帮助都将不胜感激!

谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-10-31 20:02:37

reversed()返回迭代器,而不是字节串。改为使用负步幅切片技巧:

代码语言:javascript
复制
return gearman_job.data[::-1]

这将返回一个相反的字符串。

比较:

代码语言:javascript
复制
>>> reversed('somedata')
<reversed object at 0x100480e50>
>>> 'somedata'[::-1]
'atademos'
票数 3
EN

Stack Overflow用户

发布于 2015-10-08 22:58:12

为了防止其他人遇到类似的错误,您需要从worker返回一个字符串。如果不显式返回或返回任何其他类型的数据,则scrapy将引发错误。原因很简单,Gearman的协议是基于文本的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13157451

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档