Дозировать Django или wsgi app init несколько раз в развертывании env? - PullRequest
3 голосов
/ 13 марта 2019

Я имею в виду, если я сохраню глобальный int в памяти проекта Django и изменим / просматриваю его, то все в порядке с manage.py runserver.

Однако будет ли это работать в среде развертывания?

Я не уверен, как производственный веб-сервер (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

UPDATE

Я храню данные в памяти, потому что разветвил другой поток, чтобы получить данные из другого источника. Я должен контролировать и получать данные из этой темы с помощью функций просмотра.

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 в веб-клиент.

1 Ответ

1 голос
/ 13 марта 2019

Типичная производственная конфигурация для приложения Django, использующего любой сервер WSGI, включает в себя создание определенного числа процессов, каждый из которых имеет определенное количество потоков. То, что это за цифры, зависит от того, какой веб-сервер и / или сервер WSGI используется, но практическое правило, которое используют многие люди, - это настроить вещи так, чтобы на каждый ЦП сервера был как минимум один процесс.

Я бы предположил, что любое развертывание вашего приложения Django будет многопроцессорным, поэтому любой трюк, предполагающий, что что-то в памяти согласовано для нескольких запросов, не будет работать, потому что вы не знаете, какой процесс его обработает.

...