Недавно я узнал, что размещение кода Python над этой строкой
def application(environ, start_response):
приведет к кэшированию вещей в 8 потоках.
Основываясь на моем файле журнала ошибок apache. Я снова и снова перезагружал свой сценарий wsgi и понял, что 8 потоков (процессов) создаются сценарием wsgi.
другими словами, этот код ниже..
import os
ooo = os.popen('/text-file.txt').read()
def application(environ, start_response):
start_response('200 OK', [('content-type', 'text/html')])
yield ooo
содержимое text-file.txt на самом деле
cached
в 8 разных темах.
после того, как скрипт wsgi создает 8 разных потоков и кэширует их 8 раз.. он выбирает один случайным образом из 8 кэшированных, и поэтому даже не имеет значения, если
/text-file.txt
модифицируется, обновляется.. и т.д..
решение, кажется, размещает
ooo = os.popen('/text-file.txt').read()
под линией environ вот так:
import os
def application(environ, start_response):
ooo = os.popen('/text-file.txt').read()
start_response('200 OK', [('content-type', 'text/html')])
yield ooo
этот приведенный выше код работает нормально.
ooo = os.popen('/text-file.txt').read()
основан на чтении файла в реальном времени и ничего не кэшируется в 8 процессах 8 раз.
вопрос вот в чем...
если у меня слишком много строк, таких как
ooo = os.popen('/text-file.txt')
ooo2 = ooo.read()
ooo3 = "something"
ooo4 = "something else"
я имею в виду, что в основном все это должно было бы пойти под
линия окружения
но что, если у меня их 40, например, в сценарии wsgi. вот как это будет выглядеть, если предположить, что это разные вещи..
import os
def application(environ, start_response):
ooo = os.popen('/text-file.txt')
ooo2 = ooo.read()
ooo3 = "something"
ooo4 = "something else"
start_response('200 OK', [('content-type', 'text/html')])
yield ooo
если таких вещей слишком много.. должны ли они все быть помещены под
def application(environ, start_response):
или они должны быть вызваны через
functions ?
или это просто не важно?
каким будет метод создания самых быстрых кодов?