我在Python 2.5中有一个监听beanstalk队列的应用程序.它在我测试的所有机器上都能正常工作,除了我新购买的MacBook Pro.
在那台计算机上,当我尝试运行它时,我收到此错误:
Traceback (most recent call last): File "jobs.py", line 181, inJobs().start() File "jobs.py", line 154, in start self.jobQueue = Queue() File "src/utils/queue.py", line 16, in __init__ self.connection = serverconn.ServerConn(self.server, self.port) File "src/beanstalk/serverconn.py", line 25, in __init__ self.poller = select.poll() AttributeError: 'module' object has no attribute 'poll'
serverconn.py具有以下导入:
import socket, select
当我尝试从命令行运行它时,它也会失败:
Python 2.5.1 (r251:54863, Jul 23 2008, 11:00:16) [GCC 4.0.1 (Apple Inc. build 5465)] on darwin Type "help", "copyright", "credits" or "license" for more information. >>> import select >>> select.poll() Traceback (most recent call last): File "", line 1, in AttributeError: 'module' object has no attribute 'poll'
你对可能发生的事情有任何想法吗?
PS:尽管我非常有信心这不是一个源问题,如果你需要一些关于失败源的背景知识,可以在http://pastie.org/399342](this pastie)找到它.
更新:自第一个答案以来,我推测是否支持Mac OS上的select.poll(),但我也有一个iMac,并且具有完全相同的操作系统版本,并且工作正常:
2009-02-25 00:27:10,067 - Queue - DEBUG - Connecting to BeansTalk daemon @ localhost:11300
ldrg.. 6
根据这张macports票, Apple对poll()的实施是直截了当的.Apple通过在Python中禁用poll()来解决这个问题,而macports现在也禁用了Pythons中的poll.我想这意味着你需要研究Python的select.kevent()而不是mac上的poll.
根据这张macports票, Apple对poll()的实施是直截了当的.Apple通过在Python中禁用poll()来解决这个问题,而macports现在也禁用了Pythons中的poll.我想这意味着你需要研究Python的select.kevent()而不是mac上的poll.