python - 在python中通过身份验证连接到套接字

标签 python sockets mongodb http-authentication

我正在尝试通过 python 套接字连接到 mongodb 实例。网址如下所示

用户名:密码@host.com:端口

如何使用 python 套接字连接到此?

下面的代码给了我这个错误:[Errno -5]没有与主机名关联的地址

import socket
import tornado

full_url = '%s:%s@%s' % (username, password, host)
s = socket.socket()
s.connect((full_url, port))
stream = iostream.IOStream(s)

编辑 - 我问的原因是 asyncmongo 目前不支持这种类型的 url。我想看看是否可以写一个补丁。 asyncmongo 库使用类似于上面代码中的套接字进行连接。

最佳答案

您应该使用驱动程序连接到 mongodb。如果您正在使用 Tornado(看起来您打算这样做),请尝试 asyncmongo ;如果您使用的是线程 Web 服务器/应用程序框架(Django、Pylons 等),您可以使用 PyMongo直接。

<小时/>

编辑:至于为什么此代码不起作用,socket 模块不接受连接 URL,只接受主机名和端口。它是一个低级库。要连接到(网络)网址,请考虑使用 urllib2httplib .

<小时/>

编辑 2: MongoDB 中的身份验证不是在传输级别处理的,而是在应用程序级别处理的。我建议您先阅读Implementing Authentication in a Driver ,然后看看 PyMongo 如何实现身份验证(在 connection.pydatabase.py 中)。您还需要移植或重新实现 asyncmongo 的 MongoDB 连接 URI 解析,记录为 here .

关于python - 在python中通过身份验证连接到套接字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6540515/

相关文章:

Python:将 NLTK Stanford POS 标签映射到 WordNet POS 标签

Python + OpenCV - 读取图像文件名

python - SQLAlchemy python DELETE记录,奇怪的模式

python - 如何使QComboBox列表中的文本居中?

c++ - 将 gprof 与套接字一起使用

c - UDP 单播 : two processes listening on same udp port; only one receiving packets

python - 通过套接字从 C++ 服务器向 Python 客户端发送数据时出现问题

c# MongoDB 驱动程序 : FindOneAndUpdate how to know if it has found a document?

mongodb - 许多集合中的一个文档

node.js - $push 是基于 mongodb 中的 $cond 吗?