我的意思是,如果我将全局int存储在Django
项目的内存中并修改/查看,则可以使用manage.py runserver
。
但是,这仍然在部署环境中起作用吗?
我不确定生产Web服务器(Apache或UWSGI)将如何使用我的代码。该应用程序会在不同的过程中多次初始化吗?
示例:
global_var.py:
command = CommandEvent("start") #a class contains event and command
var1 = 1
views.py:
from global_var import var1
def show_var(request):
return var1
更新
我将数据存储在内存中,因为我分配了另一个线程以从其他来源获取数据。我必须通过视图函数来控制并从此线程获取数据。
spider_py:
from global_var import var1, command
spider_thread = threading.Thread(target=spider_serve_forever, args=(command, var1))
def spider_serve_forever(command, var1):
while(1):
if command.str == "start":
pass
elif command.str == "get_data":
var1 = get_data()
command.event.set()
else:
pass
我还有另一个线程等待事件,一旦设置,将通知通过WebSocket推到Web-Client。
使用任何WSGI服务器的Django应用程序的典型生产配置涉及传递一定数量的流程,每个过程都带有一定数量的线程。这些数字的确切取决于使用了哪个Web服务器和/或WSGI服务器,但是许多人使用的经验法则是配置每个服务器CPU至少有一个过程。
我会假设您的Django应用程序的任何部署都将是多进程,因此任何假设在多个请求中内存一致的技巧都是不起作用的,因为您不知道哪个过程将处理它。
<</p>