小编Val*_*lar的帖子

如何配置django频道?

我的技术堆栈是Redis作为通道后端,Postgresql作为数据库,Daphne作为ASGI服务器,Nginx作为整个应用程序.使用Docker Swarm部署所有内容,只有Redis和数据库外部.我有大约20个虚拟主机,20个接口服务器,40个http工作者和20个websocket工作者.使用Ingress覆盖Docker网络完成负载平衡.

问题是,有时在性能上会发生非常奇怪的事情.大多数请求的处理时间不到400毫秒,但有时请求可能需要2-3秒,即使在非常小的负载下也是如此.使用Django调试工具栏或基于中间件的分析器的分析工作程序什么都不显示(时间0.01s左右)

我的问题:有什么好方法可以用django-channels分析整个请求路径吗?我希望每个阶段花费多少时间,即当Daphne处理请求时,当工作者开始处理时,当它完成时,当接口服务器向客户端发送响应时.目前,我不知道如何解决这个问题.

python django profiling django-channels daphne

10
推荐指数
1
解决办法
907
查看次数

仅将docker swarm模式端口发布到localhost

我用swarm中的一个网站创建了docker swarm,在外面发布端口8080.我想使用在端口80上运行外部群集的Nginx来使用该端口,这将执行服务器名称解析和主机静态文件.

问题是,swarm使用iptables自动将端口8080发布到Internet,我不知道是否可以只允许本地nginx实例使用它?因为当前用户可以访问80和8080端口上的站点,而第二个端口被破坏(没有图像).

尝试玩ufw,但它不起作用.手动更改iptables也是一场噩梦,因为我必须在每次更新后在每个swarm节点上执行此操作.有解决方案吗

编辑:我不能使用相同的网络swarm和nginx swarm,因为覆盖网络与普通的单主机容器不兼容.从理论上讲,我可以将nginx放到swarm中,但我更喜欢将它保持在包含静态文件的同一主机上.

nginx docker docker-swarm docker-networking

7
推荐指数
2
解决办法
3412
查看次数

如何使用 Jinja2 与 Flask 和 Pjax 仅渲染给定块

我正在寻找一种使用 Flask 和Pjax渲染部分模板的便捷方法。我想出了这样的事情:

# utils.py
def render_pjax(base, view, **kwargs):
    is_pijax = "X-PJAX" in flask.request.headers
    return flask.render_template(
        'pjax_wrapper.html', is_pjax=is_pijax, extends=base, view=view, **kwargs)

# pjax_wrapper.html
{% if not is_pjax %}

    {% extends extends %}
    {% block pjax_content %}
        {% include view %}
    {% endblock %}

{% else %}

    {% include view %}

{% endif %}
Run Code Online (Sandbox Code Playgroud)

这样我就可以定义这样的模板:

# without_pjax.html
<div>
    <h1>Search</h1>
    (...some static content..)
    <div class="content" id="search-results">
        {% block pjax_content %}

        {% endblock %}
    </div>
</div>

# with_pjax.html
<ul>
    <li>entry1</li>
    <li>entry2</li>
    ... …
Run Code Online (Sandbox Code Playgroud)

python jquery jinja2 flask pjax

1
推荐指数
1
解决办法
1299
查看次数