최근에 나는이 라인WSGI - 모든 것이 "환경"라인 아래로 가야 "전역 적으로"캐시되지 않습니다.
def application(environ, start_response):
위의 파이썬 코드를 삽입하는 8 개 스레드에 캐시되는 일이 발생할 것을 발견했다.
내 아파치 오류 로그 파일을 기반으로합니다. wsgi 스크립트를 반복해서 다시로드하고 wsgi 스크립트로 8 개의 스레드 (프로세스)를 생성했습니다. 텍스트 file.txt를이 코드 아래 즉
..
import os
ooo = os.popen('/text-file.txt').read()
def application(environ, start_response):
start_response('200 OK', [('content-type', 'text/html')])
yield ooo
내용은 8 개 개의 다른 스레드에서 실제로
cached
있습니다. WSGI 스크립트 후
는 .. 등이 8 캐시 중 무작위로 하나를 선택합니다 및
/text-file.txt
가 수정 업데이트되면 따라서도 문제가되지 않습니다 .. 8 개 다른 스레드와 캐시이 8 다른 시간을 만들어 ..
솔루션은이 같은 싸다 라인 아래
ooo = os.popen('/text-file.txt').read()
을 배치 할 것 같다
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 개의 다른 시간에 캐시되지 않습니다. 나는 그런
ooo = os.popen('/text-file.txt')
ooo2 = ooo.read()
ooo3 = "something"
ooo4 = "something else"
내가 기본적으로 말은 너무 많은 라인 같은 경우
여기 질문은 ...
이 모든 것은
와 환경 라인
에서 가야 할 것하지만 예를 들어 wsgi 스크립트에서 40 개가 있으면 어떻게 될까요? 여기 모두가
def application(environ, start_response):
아래에 배치해야합니다 .. 같은 너무 많은 일들이있을 경우
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
.. 그들이 모두 다른 것들 가정 같을 것이다 무엇하거나 호출한다
functions ?
또는 간단하게 중요하지 않습니까?
가장 빠른 코드를 만드는 방법은 무엇입니까?
예, 파이썬 모듈이 캐시됩니다. WSGI를 사용하여 각 요청에 대해 새로운 파이썬 인터프리터를 다시 실행할 필요가 없다. –
@Martijn Pieters,하지만 그것은 단지 모듈이 아닙니다. 캐시되고있는 파일의 내용입니다. 이 세상이나이 우주에서 이와 같은 개념을 어디에서 들었습니까? –
@Martijn Pieters, "환경 라인 위에 정의 된 클래스 나 함수에 파일 경로를 제공 하시겠습니까?"라고 말하려고 했습니까? –