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

标签 python gearman python-gearman

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

worker :

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()

客户:

import gearman

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

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

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'>

如有任何帮助,我们将不胜感激!

谢谢。

最佳答案

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

return gearman_job.data[::-1]

这会返回一个反转的字符串。

比较:

>>> reversed('somedata')
<reversed object at 0x100480e50>
>>> 'somedata'[::-1]
'atademos'

关于python - 运行基本 python-gearman 示例时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13157451/

相关文章:

php - 通过 ssl 从 php 应用程序连接到 gearman 服务器

python - 从本地 gearman 客户端调用远程 gearman 工作人员?

Python gearman 基本示例错误

php - Supervisord 为 PHP 和 Gearman 添加多个进程

django - 如何使用 Django、Tastypie、Redis 和任务队列 Gearman 创建像 Facebook 这样的新闻提要?

python - 如何在 Tkinter 中创建 20x20 的图 block 网格,然后更改特定图 block 的颜色

python - 在 symfit python 模块中使用命名模型来拟合高斯分布

python - virtualenv 使用--system-site-packages,但只针对特定的包?

python - PyQT4 QMenuBar 可见性由 MouseOver 切换

php - Gearman 在 php 示例中抛出 GEARMAN_COULD_NOT_CONNECT