python - 从 python 库调用时,Solaris 上的 BeanStalkd 不会返回任何内容

标签 python solaris yaml beanstalkd

我使用的是 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/

相关文章:

yaml - YAML 中的 <<(双左箭头)语法被称为什么?它在哪里指定?

python - GEOSGeometry 到底是什么

python - Django ContentFile() 意外空行 (django.core.files.base)

python - 考虑顺序对 pandas 列执行累积计数

bash - 用于在多个服务器上搜索不同内容的 Shell 脚本

java - 使用 application.yml 配置 Spring Boot

python - 基于条件的嵌套循环的字典理解

c++ - solaris (x86) 上std::basic_string 的一些疑惑

go - 如何交叉编译solaris 32位

java - "Mapping keys are not allowed here"当我在 yaml 文件中使用 '?' 字符时。我怎样才能使程序可以使用 '?' 字符?