2

私は単純なサイト スパイダーを書いていますが、この機会に Python での並行プログラミングについて何か新しいことを学ぶことにしました。スレッドとキューを使用する代わりに、別の方法を試してみることにしましたが、何が自分に合っているかわかりません。

Stackless、Celery、Twisted、Tornado などについて聞いたことがあります。データベースと Celery の他のすべての依存関係をセットアップする必要はありませんが、それが私の目的に適している場合はそうします。

私の質問は、私のアプリへの適合性と一般的な有用性のバランスはどのようなものですか? 私はスタックレスのタスクレットを見てきましたが、urlopen() 呼び出しがブロックされないか、それらが並行して実行されるかどうかはわかりません。どこにも言及されていません。

誰かが私のオプションの詳細と、何を使用するのが最適かを教えてもらえますか?

ありがとう。

4

3 に答える 3

4

Tornado は Web サーバーであるため、スパイダーを作成する際にはあまり役に立ちません。Twisted ははるかに一般的 (そして必然的に複雑) で、あらゆる種類のネットワーク タスクに適しています (また、いくつかの GUI フレームワークのイベント ループとうまく統合されています)。確かに、以前は twisted.web.spider がありました (ただし、メンテナンスされていなかったため、何年も前に削除されました。そのため、Twisted が提供する機能の上に自分で展開する必要があります)。

于 2010-02-12T03:17:22.770 に答える
2

Twisted が私の票を獲得したと言わざるを得ません。

Twisted では、イベント駆動型のタスクを実行するのはかなり簡単です。GTK+ や DBus などの他の重要なシステム コンポーネントとの統合は非常に簡単です。

HTTP クライアントのサポートは今のところ基本的なものですが、改善されています (>9.0.0):関連する質問を参照してください。

追加のボーナスは、Twisted が Ubuntu のデフォルト リポジトリで利用できることです ;-)

于 2010-02-12T01:47:20.117 に答える
1

パッケージ サイズの 概要については、 ohloh.net/p/compareを参照してください。
もちろん、ソース サイズは大まかな指標にすぎません (私が本当に欲しいのは、nr ページのドキュメント、nr ページの例、依存関係です) が、それは役に立ちます。

于 2010-02-12T15:11:26.600 に答える