1

1 分あたり最大 2000 個の URL にアクセスし、応答をデータベースに保存する必要があるという要件があります。URL は、毎分の開始から 5 秒以内にヒットする必要があります (ただし、応答は待つことができます)。その後、次の分に同じことが起こります。だから、それは時間が重要です。

この問題を解決するために、Python のマルチプロセッシングとスレッド化を使用してみました。ただし、一部の URL は応答に最大 30 分かかる場合があり、これにより他のすべての URL の処理がブロックされます。

また、C などの低レベルのものを使用することにもオープンですが、どこから始めればよいかわかりません。

正しい方向へのガイダンスは役に立ちます、ありがとう。

4

2 に答える 2

1

各 URL が長時間ブロックされる可能性がある場合は、スレッド プールを介してではなく、それらをすべて同時に送信する必要があるため、スレッドよりも軽いものが必要です。

geventは、この種のことを得意とする eventlib ループの Python ラッパーです。彼らのドキュメントから:

>>> import gevent
>>> from gevent import socket
>>> urls = ['www.google.com', 'www.example.com', 'www.python.org']
>>> jobs = [gevent.spawn(socket.gethostbyname, url) for url in urls]
>>> gevent.joinall(jobs, timeout=2)
>>> [job.value for job in jobs]
['74.125.79.106', '208.77.188.166', '82.94.164.162']
于 2013-06-24T09:47:04.940 に答える