Depoyment Env中的剂量Django或WSGI App Init多次



我的意思是,如果我将全局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>

最新更新