Подключение к сокету с аутентификацией в python

1

Я пытаюсь подключиться к экземпляру mongodb через сокет python. URL-адрес выглядит следующим образом:

Имя пользователя: [email protected]: порт

как я могу подключиться к этому с помощью сокета 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)

EDIT - причина, о которой я прошу, заключается в том, что Asyncmongo не поддерживает этот тип URL прямо сейчас. Я пытаюсь посмотреть, могу ли я написать патч. Библиотека asyncmongo соединяется с помощью сокета, подобного тому, который указан в приведенном выше коде.

Теги:
sockets
http-authentication

1 ответ

2
Лучший ответ

Вы должны использовать драйвер для подключения к mongodb. Если вы используете Tornado (похоже, вы намереваетесь это сделать), попробуйте asyncmongo; если вы используете файловую систему веб-сервера с многопоточным доступом (Django, Pylons и т.д.), вы можете напрямую использовать PyMongo.


Изменить. Что касается того, почему этот код не работает, модуль socket не принимает URL-адреса для подключения, просто имя хоста и порт. Это низкоуровневая библиотека. Чтобы подключиться к (сетевым) URL- адресам, рассмотрите возможность использования urllib2 или httplib.


Изменить 2: аутентификация в MongoDB не обрабатывается на уровне транспорта, она обрабатывается на уровне приложения. Я предлагаю вам сначала прочитать " Реализация аутентификации в драйвере", а затем взглянуть на то, как PyMongo реализует проверку подлинности (в connection.py и database.py). Вам также потребуется выполнить перенос или переопределить разбор URI-кода MongoDB для asyncmongo, который описан здесь.

  • 1
    Еще лучше: запросы ... pypi.python.org/pypi/requests
  • 0
    Сладкий, никогда не слышал об этом, но выглядит круто.
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню