django 中每个 GET 请求的响应更改
response change on every GET request in django
我正在尝试使用循环技术在 Django 中实现负载平衡,方法是在每次 GET
调用时获得不同的响应。
我的模特:
class Load_Balancing(models.Model):
instance_name = models.CharField(max_length=100)
sequence = models.IntegerField()
algorithm = models.CharField(max_length=100)
我试过:
class Get_Instance(APIView):
def get(self, request):
next_instance = Load_Balancing.objects.all().order_by("last_visited")[:1] # get the oldest one
next_instance.save()
data = {}
for r in ins:
data["instance_name"] = r.instance_name
return Response(data)
这里 instance_name
是随机的 URL
并且我正在尝试使其动态化以便在每个 GET 请求中我得到最后一个实例,然后按顺序得到其他实例,即第一个实例数据库等等。
您可以改用 models.DateTimeField()
字段。记录最后一次使用它们,然后获取最旧的:
class Load_Balancing(models.Model):
...
last_visited = models.DateTimeField(auto_now=True)
...
class Get_Instance(APIView):
def get(self, request):
next_instance = Load_Balancing.objects.all().order_by("last_visited").first() # get the oldest one
next_instance.save() # this will update the last_visited field
...
如果您想获取所有实例:
class Get_Instance(APIView):
def get(self, request):
instances = list(Load_Balancing.objects.all().order_by("-last_visited"))
current_instance = instances[-1]
current_instance.save()
data = []
for instance in instances:
data.append({
'instance_name': instance.instance_name,
'is_current': instance == current_instance
})
return Response(data)
这不一定是线程安全的,但除非您需要它,否则这应该足以满足您的要求
我正在尝试使用循环技术在 Django 中实现负载平衡,方法是在每次 GET
调用时获得不同的响应。
我的模特:
class Load_Balancing(models.Model):
instance_name = models.CharField(max_length=100)
sequence = models.IntegerField()
algorithm = models.CharField(max_length=100)
我试过:
class Get_Instance(APIView):
def get(self, request):
next_instance = Load_Balancing.objects.all().order_by("last_visited")[:1] # get the oldest one
next_instance.save()
data = {}
for r in ins:
data["instance_name"] = r.instance_name
return Response(data)
这里 instance_name
是随机的 URL
并且我正在尝试使其动态化以便在每个 GET 请求中我得到最后一个实例,然后按顺序得到其他实例,即第一个实例数据库等等。
您可以改用 models.DateTimeField()
字段。记录最后一次使用它们,然后获取最旧的:
class Load_Balancing(models.Model):
...
last_visited = models.DateTimeField(auto_now=True)
...
class Get_Instance(APIView):
def get(self, request):
next_instance = Load_Balancing.objects.all().order_by("last_visited").first() # get the oldest one
next_instance.save() # this will update the last_visited field
...
如果您想获取所有实例:
class Get_Instance(APIView):
def get(self, request):
instances = list(Load_Balancing.objects.all().order_by("-last_visited"))
current_instance = instances[-1]
current_instance.save()
data = []
for instance in instances:
data.append({
'instance_name': instance.instance_name,
'is_current': instance == current_instance
})
return Response(data)
这不一定是线程安全的,但除非您需要它,否则这应该足以满足您的要求