【发布时间】:2019-08-09 20:59:27
【问题描述】:
我使用 django restframework 创建了一个 API。它在 django 开发服务器上运行良好。当应用程序迁移到 Web 服务器(apache mod wsgi,nginx - gunicorn)时,只有当分页设置为每页 100 条记录时它才能正常工作,如果分页设置为超过 100 条记录,则请求 100 到 200 条记录它们仍然停滞或阻塞。
我在 Apache 中使用 wsgi 和 gunicorn 使用 nginx 部署了应用程序。但问题仍然存在。 它在任何页面大小的 django 开发服务器上都能完美运行,如果我将页面大小设置为 100 条记录,它在服务器上也能正常工作。
查看
class SoftwareList(generics.ListCreateAPIView):
queryset = SoftwareModel.objects.all().order_by('-id')
serializer_class = SoftwareSerializer
http_method_names = ['get']
filter_backends = (DjangoFilterBackend,)
filter_fields = ('product_type',)
型号
class SoftwareModel(models.Model):
id = models.AutoField(primary_key=True)
product_id = models.CharField(unique=True, max_length=255, blank=True, null=True)
product_type = models.CharField(unique=True, max_length=255, blank=True, null=True)
software_suggestion = models.CharField(max_length=255, blank=True, null=True)
class Meta:
managed = False
db_table = 'software_view'
序列化器
class SoftwareSerializer(serializers.ModelSerializer):
class Meta:
model = SoftwareModel
fields = ('id', 'product_id', 'product_type',
'software_suggestion')
设置
REST_FRAMEWORK = {
'DEFAULT_FILTER_BACKENDS': ('django_filters.rest_framework.DjangoFilterBackend',),
'DEFAULT_PAGINATION_CLASS': 'rest_framework.pagination.PageNumberPagination',
'PAGE_SIZE': 100
}
预期:分页数不是 100 的请求。
实际:请求停滞/阻塞
【问题讨论】:
-
我可以看看你的模型和序列化器吗?它似乎是由进行大量查询引起的
timeout问题。 -
当然,问题已更新。
标签: django django-rest-framework django-views