【问题标题】:How to handle on stop event for django?如何处理 django 的停止事件?
【发布时间】:2016-01-11 15:55:59
【问题描述】:

我是 django 框架的新手,我想处理 django 应用程序的全局事件,例如 asp.net 的 onStart 和 onStop。有没有办法让我使用下面的代码处理 OnStart 但无法处理 onStop 请指导我这样做。

__author__ = 'qasim'

from django.apps import AppConfig


class MyAppConfig(AppConfig):
    name = 'api'
    verbose_name = "My Application"

    def ready(self):
        print("hello-----------------------------------------------------")
        pass  # startup code here

【问题讨论】:

  • Django 与 asp.net 完全无关,不清楚你在问什么。
  • @Sayse 我想在我的 django 服务器停止时执行代码。
  • 好吧,按照这个定义,django 对此做任何事情都为时已晚,听起来更像是运行 django 项目的任何工作
  • @Sayse 有没有办法处理这个事件。

标签: python django


【解决方案1】:

ASP.NET和django的混淆在于前者是服务器+框架,而后者只是框架。

Django 应用程序在某些服务器中执行,常见的选择是 apache mod_wsgi 或 uWSGI。

根据您的服务器,可能会在停止时运行某些内容。

【讨论】:

  • 当我从 asp.net 迁移到 django 时,我也遇到了全局变量问题。在 asp.net 中,我曾经使用全局静态变量来保存具有一般用途的对象。我确信这个对象对于所有用户和所有请求都是相同的。在 django + apache mod_wsgi 中启动了多个应用程序实例,每个请求最终都在其中一个实例中使用一组随机的全局变量。
  • 什么是全局变量?如果您的站点在单个服务器上运行,您可以使用具有多个线程的单个服务器进程来处理请求。线程共享全局变量。我不喜欢这种方法,因为:(a) 它无法扩展并且 (b) 使您面临同步问题。如果数据类型不是原子的,您可能会遇到最奇怪的错误。如果您运行多个进程,则可以使用共享内存。但与全局变量有相同的缺点。如果您横向扩展到多台服务器,则无论如何都必须在(易失性)存储后端中隔离共享状态。
  • 是的,我完全同意。我只是提到这个来分享我的经验,因为我认为这与 OP 想要做的事情相似,它们都是坏主意。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-01-02
  • 1970-01-01
  • 2014-01-01
相关资源
最近更新 更多