我使用的是 Solaris 10 操作系统(x86)。我安装了 beanstalkd,并且使用命令“beanstalkd -d -l hostip -p 11300”启动正常。
我的系统上有Python 2.4.4,我安装了 YAML 和 beanstalkc python 库来将 beanstalkd 与 python 连接,我的问题是当我尝试编写一些代码时:
导入beanstalkc beanstalk = beanstalkc.Connection(host='hostip', port=11300)
到目前为止没有错误,但是当我尝试在 beanstalk 上做一些事情(比如列出队列)时。什么也没发生。
beanstalk.tubes()
它只是挂起并且没有任何返回。如果我取消操作(在 python 环境中使用 ctr+c)或停止服务器,我会立即看到输出:
回溯(最近一次调用最后一次): 文件“”,第 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', ['确定']) 文件“/usr/lib/python2.4/site-packages/beanstalkc-0.1.1-py2.4.egg/beanstalkc.py”,第 83 行,位于 _interact_yaml 中 大小,= self._interact(命令,expected_ok,expected_err) 文件“/usr/lib/python2.4/site-packages/beanstalkc-0.1.1-py2.4.egg/beanstalkc.py”,第 57 行,在 _interact 中 状态,结果 = self._read_response() 文件“/usr/lib/python2.4/site-packages/beanstalkc-0.1.1-py2.4.egg/beanstalkc.py”,第 66 行,在 _read_response 中 响应 = self.socket_file.readline().split() 文件“/usr/lib/python2.4/socket.py”,第 332 行,在 readline 中 数据 = self._sock.recv(self._rbufsize)
知道发生什么事了吗?我是一个 Unix 新手,所以我不知道我做错了什么导致了这个问题。
编辑:看起来问题出在 BeanStalkd 本身,有人在 Solaris 10 上使用过这个吗?如果是的话,您使用的是哪个版本?标记为一的 v1.3 无法在 Solaris 上编译,而 git 代码存储库中的最新版本编译它会导致上述问题(或者可能需要在 Solaris 上进行一些配置?)。
edit2:我使用 beanstalkd、PyYAML、pythonbeanstalc 和 libevent 在 UBUNTU 机器上安装并编译了相同的组件,并且工作正常。问题似乎与在Solaris上编译beanstalkd有关,我还没有生成或阅读任何解决方案。
最佳答案
我可能知道出了什么问题:不要以守护进程(-d)模式启动它。我也有过同样的经历,偶然间我发现了问题所在。
或者更确切地说,我不知道出了什么问题,但它无需在守护程序模式下运行即可工作。
./beanstalkd -p 9977 &
作为替代方案。
关于python - 从 python 库调用时,Solaris 上的 BeanStalkd 不会返回任何内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1044473/