2010/02/13

python epoll

「イベント〜?」「ドリブ〜ン!」

なんか、すっかり放置していました
私は GUI でチャットなどを作るはずだったのです
しかし全く着手せぬまま現在に至っています、ごめんなさい

そこで、少しだけ epoll 触っとこうと思うことにして調べました
How To Use Linux epoll with Python
何とも丁寧な説明がありました

とりあえず
  • select.epoll.register で file descriptor と何を監視するかを登録
  • select.epoll.poll で active なやつをとってくる
ってのだけ把握

というわけで、少し試してみることに
import socket
import select
from OpenSSL.SSL import Connection, Context, SSLv23_METHOD

fqdn = 'www.google.com'

s = socket.socket()
s.settimeout(0)

epoll = select.epoll()
epoll.register(s.fileno(), 2**11-1)

print epoll.poll(1)
s.connect_ex((fqdn, 443))
print "connect"
print epoll.poll(1)
ctx = Context(SSLv23_METHOD)
print "make Context"
print epoll.poll(1)
c = Connection(ctx, s)
print "make Connection"
print epoll.poll(1)
c.set_connect_state()
print "set connect state"
print epoll.poll(1)
c.do_handshake()
print "do handshake"
print epoll.poll(1)
x509 = c.get_peer_certificate()
print x509.get_subject()

で、結果がこちら
$ python test1.py 
[(3, 276)]
connect
[(3, 260)]
make Context
[(3, 260)]
make Connection
[(3, 260)]
set connect state
[(3, 260)]
Traceback (most recent call last):
File "test1.py", line 26, in <module>
c.do_handshake()
OpenSSL.SSL.WantReadError
non-blocking のまま handshake しようとして怒られました

select.EPOLLOUT = 4, select.EPOLLHUP = 16, select.EPOLLWRNORM = 256
みたいなんですけど、まぁ、OUT だけ見りゃいいのかな、この場合

教訓:「OpenSSL の handshake を呼ぶんなら blocking にしよう」
え、そこなの?

2010/02/09

ekrn.exe

パソコンが遅いんだけど何でかなと言われて調べました
taskmgr を開いてみるとプロセスが 2 つ暴走しています
1 つは Firefox でもう 1 つは ekrn.exe というもの

ウイルス!? と思って検索してみたところ
「ekrn.exe のCPU使用率が100%になるのは?」
NOD32 のエンジンらしい

にしても何故 Firefox とコンビで
Firefox はこの前 3.6 にしてみたんですが
自分の環境でも Google Apps で暴走してしまうようだったので
3.5 に戻してみたばかりでした
今回の環境も試しに 3.5 に戻してみたら一先ず解決しました

その後 NOD32 も version up されてたので更新
これでちょっと様子見てみることにしました

NOD32 はまぁいいんだけど Firefox が暴走するのがちょっと心配です
しかも Google Apps とは
「ちょっと人柱過ぎだから気をつけろ」
ということかもしれません