我正在使用django-piston作为我的REST json api,我已经通过generate_doc函数内置的活塞设置了文档。在django runserver下,它运行良好。循环遍历doc对象的模板成功列出了类和每个方法的文档字符串。
当我通过nginx和uwsgi服务网站时,文档字符串是空的。起初我认为这是django标记过滤器和使用重构文本格式的问题,但是当我关闭它并且只是试图在模板中看到原始docstring值时,它们都是None。
我没有在日志中看到任何问题,我无法理解为什么nginx / uwsgi是这里的因素,但老实说它确实比dev runserver更好用。我有点坚持如何通过nginx / uwsgi开始调试。有没有人遇到这种情况或者有什么建议我可以开始看?
我的文档视图非常简单:
views.py
def ApiDoc(request):
docs = [
generate_doc(handlers.UsersHandler),
generate_doc(handlers.CategoryHandler),
]
c = {
'docs': docs,
'model': 'Users'
}
return render_to_response("api/docs.html", c, RequestContext(request))
我的模板几乎与库存活塞模板相同:
API / docs.html
{% load markup %}
...
{% for doc in docs %}
<h5><a href="#top">top</a></h5>
<h3><a id="{{doc.name}}">{{ doc.name|cut:"Handler" }}:</a></h3>
<p>
{{ doc.doc|default:""|restructuredtext }}
</p>
...
{% for method in doc.get_all_methods %}
{% if method.http_name in doc.allowed_methods %}
<dt><a id="{{doc.name}}_{{method.http_name}}">request</a> <i>{{ method.http_name }}</i></dt>
{% if method.doc %}
<dd>
{{ method.doc|default:""|restructuredtext }}
<dd>
{% endif %}
nginx下此模板的渲染结果是doc.doc
和method.doc
为None。我尝试删除过滤器,只检查原始值以确认这一点。
我猜这个问题必须在uwsgi层及其环境中的某个地方。我用这样的配置运行uwsgi:
/etc/init/uwsgi.conf
description "uWSGI starter"
start on (local-filesystems
and runlevel [2345])
stop on runlevel [016]
respawn
exec /usr/sbin/uwsgi \
--uid www-data \
--socket /opt/run/uwsgi.sock \
--master \
--logto /opt/log/uwsgi_access.log \
--logdate \
--optimize 2 \
--processes 4 \
--harakiri 120 \
--post-buffering 8192 \
--buffer-size 8192 \
--vhost \
--no-site
我的nginx服务器入口位置代码段如下所示:
启用位点-/ mysite.com
server {
listen 80;
server_name www.mysite.com mysite.com;
set $home /var/www/mysite.com/projects/mysite;
set $pyhome /var/www/mysite.com/env/mysite;
root $home;
...
location ~ ^/(admin|api)/ {
include uwsgi_params;
uwsgi_pass uwsgi_main;
uwsgi_param UWSGI_CHDIR $home;
uwsgi_param UWSGI_SCRIPT wsgi_app;
uwsgi_param UWSGI_PYHOME $pyhome;
expires epoch;
}
...
}
修改:配置信息
答案 0 :(得分:1)
-OO : remove doc-strings in addition to the -O optimizations
变化:
--optimize 2
为:
--optimize 1