2011-06-30 17 views
1

私はpythonソケットを通してmongodbインスタンスに接続しようとしています。 [email protected]:urlがこのPythonでの認証でソケットに接続

ユーザ名のように見えるポート

は、どのように私はPythonのソケットとこれに接続することができますか?

次のコードは、私は、このエラーを与える:[errnoを-5]ホスト名に関連付けられませんアドレス

import socket 
import tornado 

full_url = '%s:%[email protected]%s' % (username, password, host) 
s = socket.socket() 
s.connect((full_url, port)) 
stream = iostream.IOStream(s) 

EDIT - asyncmongoは今URLのこのタイプをサポートしていないので、私が尋ねる理由があります。私はパッチを書くことができるかどうかを確認しようとしています。 asyncmongoライブラリは、上記のコードのようなソケットを使用して接続します。

答えて

2

ドライバを使用してmongodbに接続する必要があります。 Tornadoを使用している場合は(そうするつもりです)、asyncmongoを試してください。スレッド化されたWebサーバー/アプリケーションフレームワーク(Django、Pylonsなど)を使用している場合は、PyMongoを直接使用できます。


編集:このコードは動作しない理由についてはsocketモジュールは、接続、単にホスト名とポートのURLを使用することはできません。これは低レベルのライブラリです。 (ウェブ)URLに接続するには、urllib2またはhttplibを使用することを検討してください。


編集2:MongoDBの中認証は、トランスポートレベルで処理されていない、それはアプリケーションレベルで扱っています。最初にImplementing Authentication in a Driverを読んでから、PyMongoがどのように認証を実装するのかを見てみることをお勧めします(connection.pydatabase.py)。また、asyncmongoのMongoDB接続URIの構文解析を移植または再実装する必要があります。これは、hereと書かれています。

+1

さらに詳しい:リクエスト... http://pypi.python.org/pypi/requests –

+0

甘い、聞いたことがないが、それはクールだ。 – dcrosta

+0

私は質問でこれを明らかにしましたが、私はasyncmongoにこれらのURLを使って作業させようとしています:) –