python: urllib2 с использованием другого сетевого интерфейса
У меня есть следующий код:
f = urllib2.urlopen(url) data = f.read() f.close()
Он работает на машине с двумя сетевыми интерфейсами. Я хотел бы указать, какой интерфейс мне нужен для использования кода. В частности, я хочу, чтобы он использовал тот, который отличается от того, который он использует по умолчанию … но я могу выяснить, что именно, если я могу просто выбрать интерфейс.
Какой самый простой / лучший / самый питонический способ сделать это?
Еще не полное решение, но если вы используете только простые объекты сокетов, вы можете сделать то, что вам нужно:
import socket s = socket.socket() s.bind(("127.0.0.1", 0)) # replace "127.0.0.1" by the local IP of the interface to use s.connect(("remote_server.com", 80))
Таким образом, вы заставите систему привязать сокет к требуемому сетевому интерфейсу.
Если вы используете twisted.web.client.Agent
Twisted, вы можете достичь этого через:
from twisted.internet import reactor from twisted.web.client import Agent agent = Agent(reactor, bindAddress=("10.0.0.1", 0))
А затем с использованием agent
обычным способом.
- Ошибка 28000: сбой входа для пользователя DOMAIN \\ пользователь с pyodbc
- Портирование C определяет питоновский путь