문제

에서 PyPubSub:

Pypubsub는 파이썬 응용 프로그램이 구성 요소를 분리 할 수있는 간단한 방법을 제공합니다.응용 프로그램의 일부는 데이터의 유무에 관계없이 메시지를 게시 할 수 있으며 다른 부품은 구독/수신 할 수 있습니다.이를 통해 메시지 "발신자"와 메시지 "청취자"가 서로 알지 못할 수 있습니다.

  • 하나는 다른 하나를 가져올 필요가 없습니다
  • 발신자는 알 필요가 없습니다
    • "누가" 메시지를 받는지,
    • 청취자가 데이터로 무엇을 할 것인지,
    • 또는 청취자가 메시지 데이터를 얻는 경우에도 마찬가지입니다.
  • 마찬가지로 청취자는 메시지가 어디서 오는지 걱정할 필요가 없습니다.

이는 모델 뷰 컨트롤러 아키텍처 또는 구성 요소의 디퍼 커플 링을 촉진하는 유사한 아키텍처를 구현하기위한 훌륭한 도구입니다.

게시/구독을 위한 Python 모듈이 PyPubSub부터 웹 여기저기에 떠다니는 것 같습니다. 파이디스패처 간단한 "집에서 요리하는" 수업까지.

서로 다른 모듈을 비교할 때 특정한 장점과 단점이 있습니까?어떤 모듈 세트가 벤치마킹 및 비교되었습니까?

미리 감사드립니다

도움이 되었습니까?

해결책

파이디스패처 에서 많이 사용된다 장고 그리고 그것은 나에게 완벽하게 작동하고 있습니다(그리고 전체 Django 커뮤니티에서도 마찬가지라고 생각합니다).

제가 기억하는 것처럼 몇 가지 성능 문제가 있습니다.

  • PyDispatcher의 인수 검사가 느립니다.
  • 사용되지 않는 연결에는 불필요한 오버헤드가 있습니다.

AFAIK 중소 규모 응용 프로그램에서 이 문제가 발생할 가능성은 거의 없습니다.따라서 이러한 문제는 귀하와 관련이 없을 수도 있습니다.모든 성능이 필요하다고 생각한다면(성급한 최적화는 모든 악의 근원입니다!) Django에서 PyDispatcher에 적용된 수정 사항을 살펴볼 수 있습니다.

도움이 되었기를 바랍니다.

다른 팁

Python을 위한 최고의 디스패치 패키지는 다음과 같습니다. 디스패치 모듈 django 내부(라고 함) 신호 문서에서).이는 django의 나머지 부분과 독립적이며 짧고 문서화되었으며 테스트되었으며 매우 잘 작성되었습니다.

편집하다: 나는 이 프로젝트를 독립 신호 프로젝트 파이썬의 경우.

최근에 유심히 살펴보니 py-amqplib RabbitMQ 브로커에 대한 AMQP 클라이언트 역할을 합니다.후자의 도구는 Erlang으로 작성되었습니다.

앱을 분리하려는 경우.그렇다면 왜 그것을 언어 자체에 결합합니까?언어 중립적인 메시지 대기열을 사용하는 것을 고려해 보십시오. 그러면 실제로 성장할 여지가 있습니다!

즉, AMQP는 이해하려는 노력을 기울이고 앱에서 수행하려는 것보다 더 많은 일을 할 수 있습니다.그대로 잘 작동하고 있습니다.YMMV.

다음은 최신 내용입니다. https://github.com/shaunduncan/smokesignal. "smokesignal은 신호를 보내고 받기 위한 간단한 Python 라이브러리입니다.이는 django 신호 프레임워크에서 영감을 얻었지만 범용 변형을 의미합니다." 예:

from time import sleep
import smokesignal

@smokesignal.on('debug')
def verbose(val):
    print "#", val


def main():
    for i in range(100):
        if i and i%10==0:
            smokesignal.emit('debug', i)
        sleep(.1)

main()

아직 언급되지 않은 일부 라이브러리는 다음과 같습니다.

PJ Eby, RuleDispatch 및 PEAK 프로젝트, 특히 Trellis의 라이브러리도 있습니다.실제로 그들의 상태가 어떤지는 모르지만 메일링 리스트는 상당히 활발합니다.

PyPi의 마지막 Trellis 버전

격자무늬 문서

나는 또한에서 구성 요소를 사용했습니다. 카멜리아 프로젝트 BBC의.Axon은 흥미로운 접근 방식이지만 게시자-소비자로부터 영감을 받은 것보다 더 많은 구성 요소입니다.글쎄요, 그 웹사이트는 다소 최신 상태가 아닙니다...Google SoC 2008에는 한두 개의 프로젝트가 있었고 작업이 진행 중입니다.

도움이 되셨는지 모르겠네요 :)

편집하다 :방금 찾았어요 파이 알림 이는 관찰자 패턴의 "비정통적인" 구현입니다.여기에는 내 도구에 필요한 대부분의 기능이 있습니다.

PyPubSub가 다소 혼란스럽게 관리되는 프로젝트인 것 같다는 사실만으로도(SF의 Wiki는 죽었고 SF에 링크된 웹사이트(다른 Wiki)는 현재 손상되었습니다) 이 PyPubSub를 사용하지 않을 충분한 이유가 될 것입니다.PyDispatcher는 온전한 웹사이트를 가지고 있지만 그들이 제공하는 유일한 문서는 독스트링에서 생성된 API에 대한 문서입니다.메일링 리스트에도 트래픽이 없습니다...나쁜 징조!

Mike도 언급했듯이 Python과 독립적인 솔루션을 선택하는 것이 완벽하게 가능합니다.이제 오해하지 마세요. 사랑 Python이지만 여전히 이 분야에서는 프로그래밍 언어와 분리된 프레임워크를 사용하는 것이 합리적입니다.

저는 메시징 경험이 없지만 몇 가지 솔루션을 살펴볼 계획입니다.지금까지 이 두 가지(무료, 오픈 소스) 프로젝트는 나에게 가장 유망한 것 같습니다(공교롭게도 둘 다 Apache 프로젝트입니다).

둘 다 적어도 문서화 및 커뮤니티 측면에서는 상당히 성숙한 프로젝트인 것 같습니다.하지만 앞서 말했듯이 소프트웨어를 전혀 사용하지 않았기 때문에 소프트웨어의 품질에 대해서는 언급할 수 없습니다.

Qpid는 Python용 클라이언트 라이브러리와 함께 제공되지만 다음을 사용할 수도 있습니다. py-amqplib.ActiveMQ의 경우 pyactivemq, STOMP(Streaming Text Orientated Messaging Protocol) 또는 Openwire를 통해 연결하는 데 사용할 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top