我使用AWS上提供的平台分发蝗虫。在加载期间,我更新了目标的route53加权记录,以指向另一个版本。
我看到的是蝗虫不更新初始DNS解析,并继续瞄准我的第一个版本。
如何使蝗虫在加载过程中重新计算dns解析?
这有点难,因为你的操作系统很可能会缓存dns解析。
您可以使用dnspython
自己解析地址(https://blog.devgenius.io/pyops-dnspython-toolkit-590a368b5c2)
A = dns.resolver.resolve(domain, 'A')
for answer in A.response.answer:
for item in answer.items:
ip = item.address
然后对该ip执行请求,手动添加适当的Host
标头。
self.client.get(f"http://{ip}", headers={"Host": domain})
编辑:如果使用操作系统dns分辨率是ok的,甚至是可取的,那么也许只是创建一个新的Session
就足够了。这将创建一个新的tcp连接,并在任何操作系统级缓存超时时触发一个新的DNS查询:
from locust.clients import HttpSession
...
@task
def t(self):
self.client.close()
self.client = HttpSession(
base_url=self.host,
request_event=self.environment.events.request,
user=self
)
# your actual requests