3

Beanstalk キューをリッスンする Python 2.5 のアプリケーションがあります。新しく購入した MacBook Pro を除いて、これまでにテストしたすべてのマシンで問題なく動作します。

そのコンピューターで実行しようとすると、次のエラーが発生します。

Traceback (most recent call last):
  File "jobs.py", line 181, in <module>
    Jobs().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 "<stdin>", line 1, in <module>
AttributeError: 'module' object has no attribute 'poll'

何が起こっているのかについて何か考えがありますか?

PS: ソースの問題ではないと確信していますが、失敗しているソースに関する背景情報が必要な場合は、[ http://pastie.org/399342 ](このパスティ) で入手できます。

更新:私が得た最初の回答以来、select.poll()がMac OSでサポートされているかどうかを推測していますが、iMacもあり、まったく同じOSバージョンで正常に動作します:

2009-02-25 00:27:10,067 - Queue - DEBUG - Connecting to BeansTalk daemon @ localhost:11300
4

4 に答える 4

6

この macports チケットによると、 Apple の poll() の実装は完全に壊れています。Apple は Python で poll() を無効にすることでこの問題を回避し、macports は Python でも poll() を無効にするようになりました。これは、Mac でポーリングするのではなく、Python の select.kevent() を調べる必要があることを意味すると思います。

于 2011-02-26T02:56:02.293 に答える
2

あなたの答えはここにあると思います

http://atomized.org/2008/12/python-on-os-x-leopard-lacks-selectpoll/

于 2009-02-25T04:07:01.730 に答える
0

select.poll()

(すべてのオペレーティング システムでサポートされているわけではありません。 ) ファイル記述子の登録と登録解除、および I/O イベントのポーリングをサポートするポーリング オブジェクトを返します。ポーリング オブジェクトでサポートされているメソッドについては、以下のセクション ポーリング オブジェクトを参照してください。

私の推測では、macOS ではサポートされていません。

于 2009-02-25T03:16:17.033 に答える