mod_wsgi를 사용하여 WSGI 응용 프로그램을 작성했습니다. 많은 동시 연결 기능을 원합니다. mod_wsgi는 각 요청에 대해 새로운 프로세스를 회전시켜 스레딩을 사용하지 못하도록합니다. 한 스레드에서 다른 스레드로 변경 사항을 알리는 데는 조건()을 사용합니다.Python threading. 여러 프로세스에서 수행 할 수있는 기능()
다른 실행중인 프로세스 (RPC, AMQP, d-bus, Jabber)간에 실시간 메시징을 제공하는 몇 가지 다른 방법이 있음을 알고 있지만 특별히 찾고있는 것은 한 가지 라이너에 가까운 것입니다. threading.wait() 및 threading.notifyAll().
mod_wsgi를 사용하지 않고 여러 스레드를 실행하고 있었을 때, 여기에 필자는 기본적으로 저에게 맞고 있습니다. 분명히 두 기능은 서로 다른 쓰레드에 의해 실행되었다 :
def put_value:
# user has given a new value
# update in DB, then notify any waiting threads
my_condition.acquire()
my_condition.notifyAll()
my_condition.release()
def get_value:
# user has requested to receive a new value as of this point
# we will return a value as soon as we are notified it has changed
my_condition.acquire()
my_condition.wait()
my_condition.release()
# return some val out of the DB
을 다시 한번, 내가 무엇을 찾고 있어요 것은 한 - 라이너 threading.wait()와 threading.notifyAll()에 가까운 무언가이다. 백그라운드에서 실행중인 일부 구성 및 설정을 설정하는 데는 신경 쓰지 않습니다. 그러나 계속 진행할 수 있다는 알림이 표시 될 때까지 요청 중간에 중지하고 대기하는 기능을 사용하는 상당한 양의 코드가 있습니다.
mod_wsgi 모듈은 각 요청에 대해 새로운 프로세스를 시작하지 않습니다. 그러나 mod_wsgi의 특정 구성은 다중 프로세스이므로 요청이 매번 같은 프로세스로 진행되지 않을 수도 있습니다. mod_wsgi의 데몬 모드를 단일 프로세스의 기본값으로 사용하면이 문제가 발생하지 않습니다. –