python – Django框架 – 是否有可以订阅的关闭事件?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了python – Django框架 – 是否有可以订阅的关闭事件?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1379字,纯文字阅读大概需要2分钟。
内容图文
![python – Django框架 – 是否有可以订阅的关闭事件?](/upload/InfoBanner/zyjiaocheng/708/b638f53d96da4d92a743c8f8e511d504.jpg)
我有一个问题,我希望可以通过Django中的某种形式的关闭钩子来解决.
我仍然是Python / Django开发的初学者,为了帮助我学习,我已经为自己设置了一个开发在浏览器中运行的COMET / Reverse Ajax风格聊天网站的项目.浏览器不断轮询服务器以查找任何消息.当服务器收到轮询请求时,它会检查是否有任何消息在等待,如果没有,它将尝试获取已经获取的threading.Lock对象的锁定.这会导致处理请求的线程阻塞,直到收到消息并释放前面提到的锁定.
当我关闭服务器时出现问题.此时我正在使用开发服务器(python manage.py runserver).如果从上述过程中阻止某个线程,则服务器不会关闭.
有没有办法在服务器尝试关闭时执行代码,以便我可以释放任何等待的线程?
我看了下面的similar question然而它没有帮助我.有人猜测这种事件挂钩不存在,但没有明确的答案.我已经googled高低,但没有运气.
我使用的是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)
由于信号只能从主线程调用,因此不适用于runserver.使用–noreload选项调用runserver,或切换到gunicorn.
内容总结
以上是互联网集市为您收集整理的python – Django框架 – 是否有可以订阅的关闭事件?全部内容,希望文章能够帮你解决python – Django框架 – 是否有可以订阅的关闭事件?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。