如何只执行一次Django启动代码 [英] How to execute django startup code only once

查看:9
本文介绍了如何只执行一次Django启动代码的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我知道已经有很多关于这个话题的问题得到了回答,但都没有奏效。 在centos6.2上使用apache2.2mod_wsgi 3.3python 2.7.3django 1.4

我尝试启动urls.py形式的代码,它被随机执行多次,并且在启动完成后随机执行。接下来,我尝试使用这里解释的中间件技巧Where to put Django startup code?启动代码也被随机执行了几次(打印出一些调试消息,多次看到相同的消息)。

问题是,我希望有一个global TCP Client,连接并与TCP服务器通信。它应该只初始化一次,如果它随机创建新的实例,旧的连接将丢失,谁知道什么时候会被破坏,并且当操作系统耗尽内存时(不确定这一点),该套接字可能会被破坏。因此,我们的目标是拥有一个global TCP Client,供触发Connect/Disconnect/Send/Receive等TCP客户端函数的所有函数使用。

有没有针对此的某种apache或mod_wsgi选项?我在Windows 7上运行相同的配置,一切正常,没有任何问题。

推荐答案

必须使用以下行修改ApacheHttpd.conf: WSGIDaemonProcess site-1 threads=15

WSGIProcessGroup site-1

基本上Django在多个进程和线程中运行。为了确保全局TCP客户端线程的安全,锁定对象threading.Lock()非常有用。我还将TcpClient创建为Singleton,以防万一。

这篇关于如何只执行一次Django启动代码的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆