重新加载django cms apphook的url而不重新启动

aldryn-apphook-reload的Python项目详细描述


https://travis-ci.org/aldryn/aldryn-apphook-reload.svg?branch=develophttps://img.shields.io/coveralls/aldryn/aldryn-apphook-reload.svg

重新加载django cms apphooks的url而不重新启动

警告

这是一个原型。

简介

django cms允许extending cms pages with Apphooks。 apphook保存在数据库中,这意味着url依赖于数据库内容。为了改变 要使apphook反映在reverse(){% url ... %}调用中,web服务器将重新启动 通常是必要的。

aldryn apphook reload将自动从django cms apphook重新加载url,而无需 重新启动Web服务器。它监听cms.signals.urls_need_reloading并导致重新加载。

该信号仅在对数据库进行更改的过程中可用。整齐 让其他进程知道何时重新加载(无论是Gunicorn工作进程还是其他服务器上的进程) 令牌保存在数据库中。这意味着性能受到影响:每个请求一个数据库查询。

安装

  • aldryn_apphook_reload添加到INSTALLED_APPS
  • aldryn_apphook_reload.middleware.ApphookReloadMiddleware添加到MIDDLEWARE (将其尽可能靠近顶部)
  • 运行迁移:python manage.py migrate aldryn_apphook_reload

高级

如果触发cms.signals.urls_need_reloading的进程是 加载(每秒约2个请求),重新加载有时会在其他进程上失败。这可能是 由于未知的竞争条件,数据库中的令牌已刷新,但是 数据库中还没有新的apphook。其他进程将尝试立即重新加载 会重新加载旧的apphook。 在默认模式和gevent模式下使用gunicorn进行的测试工作良好。

为什么不将令牌保存在缓存后端以获得更好的性能?-因为改变缓存 会在请求结束时提交数据库事务之前立即发生。 因此,其他进程会过早地重新加载它们的url。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java测试访问令牌过滤器   close()上的java Apache POI运行时异常   java为什么Eclipse中的GWT总是显示错误404?   java从socket python服务器接收消息   java mediaRecorder:start()函数失败   不关闭DB连接可能是Tomcat上Java堆溢出的原因吗?   java JFrame无法关闭   java BigQuery加载本地文件不起作用,位置有问题   java可以在递归任务中使用吗?   servlets如何从JSESSIONID加载Java HttpSession?   java将JFileChooser与PDFBox一起使用时,文件不会另存为pdf,但保存时不带扩展名   java将处理结果存储在表中   java算法发现循环世界中重叠间隔的持续时间(24小时)   在windows 10上双击Eclipse安装程序可执行文件(eclipseinstjrewin64.exe)后,java不会发生任何事情   java编译和部署自定义Solr请求处理程序   Java/Android崩溃ApacheCommonsio2。4.jar   spring web应用程序中的java集成收件箱功能   java Grizzly、Jersey和Spring自动布线问题   java如何在pom中添加jar文件依赖项。xml   关于Android中大量GUI更新编码的java概念(GUI处理程序)