当前位置: 首页 > 面试题库 >

Django框架-是否存在可以订阅的关闭事件?

赵锐
2023-03-14
问题内容

我有一个问题,希望可以通过Django中的某种形式的关闭挂钩来解决。

我仍然是Python / Django开发的初学者,为了帮助学习,我为自己设定了一个开发在浏览器中运行的COMET
/反向Ajax样式聊天站点的项目。浏览器连续轮询服务器是否有任何消息。服务器收到轮询请求时,将检查是否有等待的消息,如果没有,则将尝试获取已获取的
threading.Lock 对象的锁。这将导致正在处理请求的线程阻塞,直到收到消息并释放前面提到的锁为止。

关闭服务器时出现问题。此时,我正在使用开发服务器(python manage.py runserver)。如果上述进程阻止了某个线程,则服务器不会关闭。

服务器尝试关闭时,有没有一种方法可以执行代码,以便释放任何等待的线程?

我正在使用Python 2.7和Django 1.5。

感谢您可以提供的任何帮助


问题答案:

我不知道关闭事件,但是您可以创建一个。

当用户按下Ctrl-C时,SIGINT信号将发送到Python进程。从wsgi.py文件中设置信号处理程序以捕获SIGINT并将其转发到程序。

wsgi.py:

...

import signal
signal.signal(signal.SIGINT, my_signal_handler)

您甚至可以将信号转发到Django信号:

my_django_shutdown_signal = django.dispatch.Signal()

def _forward_to_django_shutdown_signal(signal, frame):
    my_django_shutdown_signal.send('system')
    sys.exit(0)   # So runserver does try to exit
signal.signal(signal.SIGINT, _forward_to_django_shutdown_signal)

由于signal只能从主线程调用,因此不适用于runserver。使用该--noreload选项调用runserver ,或切换到gunicorn。



 类似资料:
  • 问题内容: 是否可以自动关闭?即,代替: …我能说......么: …在Java 7中? 问题答案: 不,该接口(也不是该类)都未实现该接口,而新的try- with-resource语法必须使用该接口。 如果您想使其工作,可以编写一个简单的包装器: 现在您可以编写如下代码: 我认为您最好还是坚持使用旧语法。使锁定逻辑完全可见是更安全的。

  • 我有一个JFRAME,它的setDefaultCloseAction到JFrame。DISPOSE_ON_CLOSE。但是问题是它的大部分线程在被处理后没有关闭。如果我把它放在JFrame上。Exit_ON_CLOSE我的整个系统退出,这不是我想要的。有没有办法在关闭后处理并完全释放它的所有线程和资源,而不是让我的所有系统退出?

  • 问题内容: javascript中的函数通过保持与其隐藏范围的(隐藏)链接来形成关闭。 当我们拥有函数(作为变量值)时,是否可以通过编程方式访问它? 真正的目标是理论上的,但一个演示可能是列出闭合的属性。 问题答案: 这是关闭的目的之一(使信息保密)。由于该函数已经执行,因此它的作用域变量不再可从外部获得(并且从未使用过)-只有在其作用域中执行的函数(仍然)可以访问。 但是,您可以通过getter

  • 问题内容: 我想知道,在关闭阅读器之后,是否需要关闭InputStream? 问题答案: 不,您不必。 由于Java中用于流的装饰器方法可以通过将新流或读取器附加到其他流上来构建新流或读取器,因此实现将自动对其进行处理。 如果查看其来源,则会看到: 因此,关闭操作实际上关闭了底层的流读取器。 编辑:我想确保关闭也可以在输入流上工作,请继续关注。 签入 在调用sd的close时调用。

  • Node.js应用程序可以使用composer-client.BusinessNetworkConnection.onAPI调用从业务网络订阅事件。事件在业务网络模型文件中定义,并由交易处理函数文件中的指定交易处理。有关发布事件的更多信息,请参阅发布事件。 在你开始之前 在应用程序可以订阅事件之前,你必须定义一些事件和发送它们的交易。还必须部署业务网络,并且必须具有可连接到该业务网络的连接配置文件

  • 问题内容: 我想知道是否可以在Django模型中存储数组? 我问这个问题是因为我需要在一个字段中存储一个数组(例如[1,2,3]),然后能够搜索特定的数组并与之匹配,或者通过它的可能组合来进行匹配。 我当时正在考虑将该数组存储为s中的字符串,然后在需要搜索内容时,将值(通过过滤其他模型获得)与’[‘,’]’和’,’连接在一起,然后使用带有生成字符串。问题在于,我将必须生成每种可能的组合,然后逐个过