Django全局,应用程序范围的变量

时间:2014-01-10 03:28:39

标签: python django multithreading

我正在尝试设置Django中任何线程都可以访问的全局变量。我知道stackoverflow上有关于此的无休止的帖子,每个人都说不要这样做。我正在编写一个Web应用程序,它使用Acora Python模块进行一些文件处理。 Acora模块基于一些输入数据(字符串)构建一个排序树。构建树的过程需要一些时间,所以我想在应用程序启动时构建Acora结构,这样当提交文件进行处理时,Acora结构就可以运行了。如果我可以将其关闭,这将从每个要处理的文件中减少30秒。

我尝试了一些方法,但是对于每个请求,数据都不可用,我认为这是因为每个请求都是在一个单独的线程中处理的,所以我需要一个交叉线程或共享内存解决方案,或者我有找到Acora以外的东西。此外,Acora不能被腌制或序列化,因为它是一个C模块,并且不会将它的数据暴露给Python。我已经尝试过Django缓存和cPickle,没有运气因为他们使用了Pickle。想法?

1 个答案:

答案 0 :(得分:0)

将Acora任务完全从Django中拉出来。使用Twisted或其他一些事件框架来创建一个Django可以直接或通过消息队列(如Celery)与其进行通信的服务,只要它有需要处理的文件。