あなたは非同期自身を呼び出して実装することができます。呼び出しごとに、新しいスレッドを開始し(またはプールから取得しようとする)、コールバックを使用して処理します。
あなたはデコレータで非常にうまくこれを行うことができます。
def threaded(callback=lambda *args, **kwargs: None, daemonic=False):
"""Decorate a function to run in its own thread and report the result
by calling callback with it."""
def innerDecorator(func):
def inner(*args, **kwargs):
target = lambda: callback(func(*args, **kwargs))
t = threading.Thread(target=target)
t.setDaemon(daemonic)
t.start()
return inner
return innerDecorator
@threaded()
def get_webpage(url):
data = urllib.urlopen(url).read()
print data
申し訳ありませんが、私が言ったように、私は非同期ソケットではなく、スレッドをしたいです。 – Tom
私はこの解決策が*華麗であると思う唯一の人ですか?*他のすべての非同期HTTPメソッドよりも優れているのは、実際には何かの完全非同期ソリューションです。 'get_webpage'を任意のコードに置き換え、非同期的に行うことができます。 – robru