【问题标题】:BeanStalkd on Solaris doesnt return anything when called from the python library从 python 库调用时,Solaris 上的 BeanStalkd 不返回任何内容
【发布时间】:2010-11-05 21:07:00
【问题描述】:

我使用的是 Solaris 10 OS(x86)。我安装了 beanstalkd,它通过使用命令“beanstalkd -d -l hostip -p 11300”开始正常。

我的系统上有 Python 2.4.4 我安装了 YAML 和 beanstalkc python 库来连接 beanstalkd 和 python 我的问题是当我尝试编写一些代码时:

进口豆茎c beanstalk = beanstalkc.Connection(host='hostip', port=11300)

到目前为止没有错误,但是当我尝试在 beanstalk 上做一些事情时,比如说列出队列。什么都没有发生。

beanstalk.tubes()

它只是挂起,没有任何回报。如果我取消操作(在 python env 上使用 ctr+c)或停止服务器,我会立即看到输出:

Traceback(最近一次调用最后一次): 文件“”,第 1 行,在? 文件“/usr/lib/python2.4/site-packages/beanstalkc-0.1.1-py2.4.egg/beanstalkc.py”,第 134 行,在管中 return self._interact_yaml('list-tubes\r\n', ['OK']) _interact_yaml 中的文件“/usr/lib/python2.4/site-packages/beanstalkc-0.1.1-py2.4.egg/beanstalkc.py”,第 83 行 大小,= self._interact(命令,expected_ok,expected_err) _interact 中的文件“/usr/lib/python2.4/site-packages/beanstalkc-0.1.1-py2.4.egg/beanstalkc.py”,第 57 行 状态,结果 = self._read_response() _read_response 中的文件“/usr/lib/python2.4/site-packages/beanstalkc-0.1.1-py2.4.egg/beanstalkc.py”,第 66 行 响应 = self.socket_file.readline().split() 文件“/usr/lib/python2.4/socket.py”,第 332 行,在 readline 数据 = self._sock.recv(self._rbufsize)

知道发生了什么吗?我是一个 Unix 新手,所以我不知道我做错了什么设置导致这个。

edit:似乎问题出在 BeanStalkd 本身,有人在 Solaris 10 上使用过这个吗?如果是这样,您使用的是哪个版本?标记为 one 的 v1.3 在 Solaris 上无法编译,而来自 git 代码库的最新版本编译它会导致上述问题(或者在 Solaris 上可能需要进行一些配置?)。

edit2:我使用 beanstalkd、PyYAML、pythonbeanstalc 和 libevent 安装并编译了相同的组件到 UBUNTU 机器,它工作正常。问题似乎是关于在 solaris 上编译 beanstalkd,我还没有产生或阅读任何解决方案。

【问题讨论】:

  • 我只是尝试将 beanstalkd 与 java 客户端连接,同样的事情发生了,测试脚本只是等待(直到取消或 beanstalkd 停止)。任何想法 Beanstalkd 可能有什么问题?

标签: python solaris yaml beanstalkd


【解决方案1】:

我可能知道出了什么问题:不要在守护进程 (-d) 模式下启动它。我也有过同样的经历,偶然发现出了什么问题。

或者更确切地说,我不知道出了什么问题,但它可以在不以守护程序模式运行的情况下运行。

./beanstalkd -p 9977 &

作为替代。

【讨论】:

    【解决方案2】:

    似乎python-client监听了服务器, 但服务器无话可说。

    有什么要读给客户的吗?

    有消费者和生产者吗?

    Look at this

    【讨论】:

    • 是的,有一些东西要读给客户端,服务器应该发送管(beanstalk.tubes()调用请求),这是“默认”管,它与我的所有其他命令相同尝试在 beanstalk(beanstalkc.Connection 对象)上执行,似乎没有命令响应。
    • 我查看了您发送的链接,但我没有使用 pybeanstalk,我使用的是 beanstalkc
    【解决方案3】:

    查看代码后(beanstalkc):

    您的客户已发送他的“列表管”消息,正在等待答复。 (直到你杀死它) 您的服务器没有应答或无法将应答发送给客户端。 (或者答案比客户预期的要短)

    是您身边(或站点)的网络管理员 :-)

    【讨论】:

    • 我也安装了 beanstalkd 服务器。我得到了 beanstalkd 的最新代码并编译它,因为官方 v1.3 没有在 solaris 上编译。我应该在哪里检查以确保 beanstalkd 或网络正常工作?我可以让我的网络管理员在我身边,我应该问他什么:)
    • 1.告诉你的网络管理员你想做什么 | 2.让你的网络管理员检查:连接和流量/客户端和服务器之间是否有数据包/哪一方(客户端或服务器不起作用。
    • 客户端和服务器都在同一台机器上运行,所以我怀疑是否存在或需要任何网络活动。
    猜你喜欢
    • 2019-03-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-06
    • 2015-04-22
    • 2014-02-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多