HTSQL shell的Get Request与Gunicorn + Nginx不兼容,用于长时间查询

时间:2013-08-07 07:13:12

标签: django htsql

我正在使用带有Django的HTSQL。我使用HTSQL shell来检查/生成我的查询,然后使用它们以json和原始格式呈现数据。 所以,我的HTSQL shell网址是:

http://127.0.0.1:8000/htsql

所以,当我想从HTSQL shell环境中的表中访问数据时,我这样做,

http://127.0.0.1:8000/htsql/table_name

并获取JSON数据,

http://127.0.0.1:8000/htsql/table_name/:json

在后台,HTSQL shell使用GET请求获取此数据。因此,从我的客户端Javascipt / jQuery,我以上述格式发起一个带有URL的GET请求,直接获取我想要的JSON数据。

当我使用本地Django服务器时,一切都很好,但是当我使用Gunicorn和Nginx部署我的项目时,它自然开始在GET请求中阻止我的一些长(实际上很长)查询。我搜索了这个问题,发现Gunicorn允许GET请求值范围从0到8190个字符。所以我调整了我的Gunicorn设置的最大限制,但仍然是同样的问题。这是因为我的查询与多个过滤器值一起使用时,超过了8190限制。

所以我认为使用POST请求通常是安全和长请求的首选。所以我将我的GET请求更改为POST请求并将其指向上面提到的相同URL并在我的本地Django Server上尝试(即没有Gunicorn和Nginx)。但现在我得到“400 BAD REQUEST”。使用firebug,我检查了响应是“不允许POST请求。”

我还注意到HTSQL_Django模块将所有请求路由到htsql_django.views.gateway。我在htsql_django模块的views.py中查看了这个网关函数,但找不到任何线索。

是这样,HTSQL不接受POST请求吗?如何使用POST请求从HTSQL获取/访问JSON数据?

0 个答案:

没有答案