기본 예/아니오 질문을 시도하는 중 - 나는 두려워하는 대답이 "아니오"이지만 - "예"일 경우 어떻게해야하는지에 대한 지침을 구합니다!파이썬 트위스티드 원자로는 파이썬 프로세스에서 공유됩니까?
Twisted Python으로 작성된 SMTP 서버가 있습니다. 그것은 아주 잘 작동합니다! 기본 흐름/기능의 순서가 호출이 뭔가 같은 : 나는 하나 이상의 별도의 파이썬 스크립트에서 수행하고자하는 (물론, 실제로는 RobotFramework됩니다 테스트,하지만 주체가 동일) 무엇
script1.py
from mailserver import startReactor, startListener, stopListener, stopReactor
startReactor()
startListener("p25")
startListener("p26")
# Handle incoming connections etc until sigint receivedand then exit cleanly
stopListener("p25")
stopListener("p26")
stopReactor()
입니다 :
script2.py
from mailserver import startReactor, startListener, stopListener, stopReactor
startListener("p27")
# Handle incoming connections etc until all necessary stuff on p27 is complete
stopListener("p27")
그리고 마지막으로
그래서 아이디어는 script1.py 실행 listene의 목록을 "변화", script3 등을 실행 할 수있다, 백그라운드에서 실행하고 script2입니다script3.py
from mailserver import startReactor, startListener, stopListener, stopReactor
stopListener("p25")
startListener("p25custom)
# Handle incoming connections etc until all necessary stuff on "custom" p27 is complete
stopListener("p25custom")
startListener("p25)
rs하지만 이러한 리스너가 script1의 반응기에 연결되어 있습니다.
ps -xaf 및 netstat를 모니터링하여 모든 스크립트에서 소켓 열기를 볼 수 있으며 script1은 정상적으로 종료되지만 script2에서 열린 소켓 and script3 do not close down ...
나는 "runningListeners"(예 : {'p25': <<class 'twisted.internet.tcp.Port'> of mailserver.ConsoleSMTPFactory on 25>}
)를 추가/삭제하여 startListener와 stopListener를 적절히 호출하는 것을 명심하고 있습니다. 그러나 이것은 분명히 script1에만 국한되어 있으며 3 개의 스크립트 사이에 "공유 된"dict가 아닙니다 ... 그리고 script2에서 시작된 청취자와 script3은 실제로 script1에서 netstat으로 시작된 반응기에 "부착"되어 있음을 매우 의심합니다./ps는 제안 할 수 있습니다. 그리고 아마도 "사용 가능한"청취자가 아닙니다. ...
그렇기 때문에 질문이 없습니다. 여러 개의 파이썬 스크립트로 수행하려는 작업을 수행 할 수 있습니까? 그렇다면 누구나 할 수 있습니다. 어떻게이 일을 성취 할 수 있는지 제안 해주세요.
많은 감사!
"프로세스간에 반응기를 공유 할 수 있습니까?"라는 질문에 대한 대답은 "아니오"입니다. 그러나, 나는 * 당신이'spawnProcess'를 사용하여 무엇을 하려는지를 생각할 수있는 방법이 있다고 생각합니다 - 당신이 실제로 "다중 스크립트"를 실행함으로써 당신이 실제로 달성하고자하는 것이 무엇인지 알아 내지 못합니다 넣어. 왜 주 프로그램에서 모든 것을 동시에 실행하지 않습니까? – Glyph
안녕하세요 @ 글리프 ... 나는 많이 두려워했습니다. 우리가 할 수있는 일은 script1에서 "기본"청취자 (p25)를 실행하는 것입니다. 그런 다음 필요에 따라 추가 리스터를 시작하고 중지합니다. 그것을 얻는 방법뿐만 아니라, 싶다 ;-) 건배! –
"reactor"라는 단어를 사용하지 않고 원하는 것을 설명 할 수 있습니까? 여러 개의 원자로를 시작하고 중지하지 않고도 추가 * 리스너 *를 시작하고 중지하는 것이 매우 간단하기 때문입니다. – Glyph