2013-02-11 2 views
0

게시를 통해 제출 된 양식 필드에서 값을 수집하는 간단한 cgi 스크립트가 있습니다. 이것을 수집 한 후 iam은이 값을 단일 텍스트 파일로 덤핑합니다.여러 사용자가 python CGI로 양식을 제출하는 중

이제 여러 사용자가 동시에 제출할 때 어떻게해야합니까?

C \ C++에서는 세마포어 \ 뮤텍스 \ rwlocks 등을 사용합니까? 우리는 파이썬에서 비슷한 것을 가지고 있는가? 또한 파일을 여러 번 열거 나 닫는 것은 모든 사용자 요청에 대해 좋은 아이디어 인 것 같지 않습니다.

우리 제품에 대한 코드베이스는 C \ C++입니다. 나는 일부보고 목적을 위해 간단한 cgi 스크립트를 작성하도록 요청 받았고 python 및 cgi를 사용하여 인터넷 검색을 수행했습니다.

알려 주시기 바랍니다.

감사합니다. Santhosh

답변

1

사용할 수있는 많은 Python 기반 서버가 있습니다. 여기에 하나는 다음과 같습니다

Twisted

트위스트 오픈 소스에서 Python으로 작성 및 라이센스 이벤트 기반 네트워킹 엔진 당신은 아마 데이터베이스에 값을 드롭 할

from twisted.internet import protocol, reactor 

class Echo(protocol.Protocol): 
    def dataReceived(self, data): 
     self.transport.write(data) 

class EchoFactory(protocol.Factory): 
    def buildProtocol(self, addr): 
     return Echo() 

reactor.listenTCP(1234, EchoFactory()) 
reactor.run() 

텍스트 파일 대신.

그러나 스레딩을 사용할 수 있으므로 lock()을 사용하면 한 번에 한 명의 사용자 만 파일에 쓸 수 있습니다.

http://effbot.org/zone/thread-synchronization.htm

잠금 장치는 일반적으로 공유 자원에 대한 액세스를 동기화하는 데 사용됩니다. 각 공유 리소스에 대해 Lock 객체를 만듭니다. 리소스에 액세스해야하는 경우 획득을 호출하여 잠금을 유지하고 (필요한 경우 잠금이 대기 할 때까지 대기), 해제하려면 호출을 호출하십시오.

+0

정보를 제공해 주셔서 감사합니다. 내 요점은 간단한 CGI를 사용하여 보고서를 작성하는 것이 었습니다.이 시나리오를 처리하기 위해 라이브러리를 내장하고 있다고 생각했습니다. 어떤 방법이든, 지금은 다른 해결책으로 옮겨 가고 있습니다. 모든 시간 내 주셔서 다시 한번 감사드립니다 !! – Santhosh

0

여러 사용자가 염려되고 뮤텍스 나 세마포어와 같은 복잡한 솔루션을 고려한다면 왜 처음에는 CGI 및 텍스트 파일과 같은 부적합한 솔루션을 사용할 것인지 계획해야합니다. 이렇게하면 저장하는 복잡성은 여러 사용자가 사용할 수 있도록 설정 한 것보다 더 중요합니다.

올바른 방법은 간단한 WSGI 응용 프로그램을 작성하는 것입니다. 어쩌면 텍스트 파일이 아닌 데이터베이스에 쓰는 Flask와 같은 것을 사용하는 것입니다.

0

간단하고 느린 방법은 다음과 같습니다. 파일에 대한 잠금 장치를 확보하고 (C에서 flock을 사용할 것), 파일에 쓰고 닫습니다. 이것이 병목 현상이 될 수 있다고 생각한다면 데이터베이스 같은 것을 사용하십시오.

관련 문제