geventでpythonの標準libsxmlrpclibを使用することは可能ですか?現在、monkey.patch_all()を使用しようとしていますが、成功しません。
from gevent import monkey
monkey.patch_all()
import gevent
import time
import xmlrpclib
from SimpleXMLRPCServer import SimpleXMLRPCServer
import urllib2
def fetch(url):
g = gevent.spawn(urllib2.urlopen, url)
return g.get().read()
def is_even(n):
return n%2 == 0
def req(url):
return fetch(url)
server = SimpleXMLRPCServer(("localhost", 8000))
print "Listening on port 8000..."
server.register_function(is_even, "is_even")
server.register_function(req, "req")
server.serve_forever()
urllib2.urlopenはサーバーをブロックしています。私には、monkey.patch_allがソケットにパッチを適用しなかったように見えます。そのため、ブロックされます。