为什么';t rails需要在我修改控制器后重新启动吗?pythonweb框架中存在这样的东西吗?

为什么';t rails需要在我修改控制器后重新启动吗?pythonweb框架中存在这样的东西吗?,python,ruby-on-rails,ruby,web,Python,Ruby On Rails,Ruby,Web,在修改视图和控制器中的代码后,Rails不需要重新启动。pythonweb框架中也存在这样的特性吗 我以前试过烧瓶和金字塔。我知道,如果我只更改了模板,它们不需要重新启动,但是如果我更改了视图(类似于rails中的控制器),它们必须重新启动。重启需要几秒钟才能完成 我记得,rails不需要重新启动,即使我在控制器中更改了代码。有人知道Python web framework中是否也存在此功能吗?Pyramid具有在更改文件后自动重新启动服务器的功能: pserve development.ini

在修改视图和控制器中的代码后,Rails不需要重新启动。pythonweb框架中也存在这样的特性吗

我以前试过烧瓶和金字塔。我知道,如果我只更改了
模板
,它们不需要重新启动,但是如果我更改了
视图
(类似于
rails
中的
控制器
),它们必须重新启动。重启需要几秒钟才能完成

我记得,
rails
不需要重新启动,即使我在
控制器中更改了代码。有人知道Python web framework中是否也存在此功能吗?

Pyramid具有在更改文件后自动重新启动服务器的功能:

pserve development.ini--重新加载

我相信每个项目文档都为您的问题提供了答案


Django也会这样做(您在问题中没有要求这样做)

Rails实现了开发时重新加载,如下所示。有两种机制在起作用

  • 每当代码引用不存在的类时,就可以调用回调(const_missing)。Rails安装这样的回调。在此回调中,它检查应用程序加载路径之一(例如,应用程序/模型中)中是否存在相应的类,加载它并继续。这种机制被称为“Rails自动加载”(不要和Ruby自动加载混淆,Ruby自动加载是不同的)
  • Rails跟踪自动加载的类。在请求结束时,它将从内存中删除所有这些类
  • 显然,这有一些局限性。如果您的代码将内容存储在全局变量中,那么Rails将不会在请求结束时清除它们,因此,如果您的全局变量不断增长,那么您将在开发过程中泄漏内存。重新加载还会导致生产中的开发之间语义上的细微差异。而

    scope :older_than_one_year, where('date < ?', 1.year.ago)
    
    范围:比一年老,其中('date<?',1年前)
    
    在开发中按预期工作(因为模型在每次请求时都会重新加载,导致1.year.ago不断被重新评估),但在生产中它不会按预期工作(因为1.year.ago只评估一次,所以如果你的应用已经运行了一年,那么该范围实际上转化为2年前)


    我不知道是否可以在Python中实现某些东西,我不熟悉Python的动态类创建/修改/删除功能,也不知道它是否有任何类似于const_missing的钩子。

    这不是一个真正具有建设性的问题。您是否尝试过使用您标记的任何框架?你有没有遇到任何问题?@MartijnPieters你不明白我的意思。我知道如何使
    金字塔
    烧瓶
    在更改代码后自动重新启动。但是RAILS似乎不需要重新启动,即使我更改了
    控制器
    @Firegun的代码,如果我正确理解了这个问题,似乎你在要求一个不适合这样做的产品推荐。这样一个问题很可能会引起争论。@TylerCrompton我是web开发的新手。我尝试了rails和一些python web框架。我只是想知道为什么rails提供了这个特性(没有重新启动而不是自动重新启动),而PythonWebFramWork没有提供。但是重新启动需要几秒钟的时间。在rails中,我记得它根本不需要重新启动。