0

コードは、基本的にいくつかの HTTP GET をサーバーに起動する単一の「マネージャー」に対して正常に機能します。しかし、私はレンガの壁にぶつかりました。

それぞれ独自の Download_Dashlet_Job オブジェクトと tcp_pool_object を持つ 2 つのマネージャーを作成するにはどうすればよいですか? 本質的に、管理者は自分の労働者に 2 つの別々の仕事を命じることになります。これは、Python のクラスを学習するのに非常に適したパズルのようです。

import workerpool
from urllib3 import HTTPConnectionPool

class Download_Dashlet_Job(workerpool.Job):
  def __init__(self, url):
    self.url = url
  def run(self):
    request = tcp_pool_object.request('GET', self.url, headers=headers)

tcp_pool_object = HTTPConnectionPool('M_Server', port=8080, timeout=None, maxsize=3, block=True)
dashlet_thread_worker_pool_object = workerpool.WorkerPool(size=100)

#this section emulates a single manager calling 6 threads from the pool but limited to 3 TCP sockets by tcp_pool_object
for url in open("overview_urls.txt"):
  job_object = Download_Dashlet_Job(url.strip())
  dashlet_thread_worker_pool_object.put(job_object)

dashlet_thread_worker_pool_object.shutdown()
dashlet_thread_worker_pool_object.wait()
4

1 に答える 1

0

まず、workerpool.WorkerPool(size=100)100 個のワーカー スレッドを作成します。以下のコメントで、6 つのスレッドが必要だと言っていますか? これを 6 に変更する必要があります。

2 番目のプールを作成するには、別のプールを作成する必要があります。必要に応じて、別のジョブ クラスを作成し、この異なるタイプのジョブを同じプールに追加することもできます。

于 2012-04-26T15:42:04.113 に答える