有没有办法维护一个跨进程可访问和可变的变量?
示例
用户A向名为make_foo
的视图发出请求,该视图中的操作需要时间。我们希望有一个标记变量,表示making_foo = True
,用户B可以查看该请求,也可以由该django应用程序中的任何其他用户或服务查看,并且在完成后可以将其设置为False
不要太认真地对待这个例子,我知道任务队列,但我想要了解的是在不需要使用数据库的情况下跨进程共享可变变量的想法。
有没有最佳实践来实现这一目标?
答案 0 :(得分:1)
您需要注意的一件事是,当您的django服务器在生产中运行时,不仅有一个django进程,将会有多个工作线程同时运行。
如果你想在进程之间共享数据,甚至在内部,你需要某种类型的数据库才能这样做,无论是使用SQLite3还是Redis(我推荐这样的东西)。
我不会详细介绍,因为之前其他人已经说过了,但Redis是一个使用键值存储的内存数据库(与Django使用模型的方式不同,Redis本质上是一个巨大的字典) 。 Redis很快,大多数操作都是原子操作,这意味着你不太可能遇到race conditions。