所以我想知道它是否可以从一个文件(带代理)运行,并将它添加到我正在做的每个线程的每个配置文件Json
。在这种情况下,如果我确实有等5个配置文件,那么现在每个配置文件将获得每个线程:ETC
def main():
log("Loaded # of profiles: " + Fore.CYAN + str(configLen) + Fore.RESET)
mylocale = config['event']['locale']
locale = 'en_%s' % mylocale
threads = []
for i in range(configLen):
t = threading.Thread(target=start, args=(str(i),locale,))
threads.append(t)
t.start()
但是我试着加起来:
t = threading.Thread(target=start, args=(str(i),locale,), proxies=proxies)
然后我意识到我需要做一些像
这样的事情proxies = config['test']['profile_' + str(thread)]['proxy']
proxies = {
'https': 'https://' + proxies
}
实际上能够让代理工作,但我不确定这是否可行。你们有什么建议,甚至可能这样做?
修改
proxies = {'http': "http://username:password@IP:PORT",
'https': "http://username:password@IP:PORT",
}
threads = []
for i in range(configLen):
t = threading.Thread(target=start, args=(str(i),locale,), proxies=proxies)
threads.append(t)
t.start()
我这样做了但是它给了我一个错误说:
TypeError: init ()得到了一个意外的关键字参数' proxies'
答案 0 :(得分:0)
您可以使用单独的方法来确定代理。这样,你的每个线程都可以调用该方法,并传递所有参数 - 以确定代理。
您可以将代理作为参数传递,并将其置于start callable中。让我们在你写的时候有代理:
proxies = {'http': 'proxy1', 'https': 'proxy2', 'local': 'proxy3'}
你可以:
t = threading.Thread(target=start, args=(str(i),locale,proxies['https']))
所以你的start
:
def start(idx, locale, proxy):
# ...
print proxy
# ...
应该有用。