웹 클라이언트 (Django) 및 원격 API (아마 독립 실행 형 데몬)와 함께 작동하는 시스템을 구축하고 있습니다. JavaScript와 같은 일부 이벤트 프레임 워크로 작업을 조정하는 것이 더 쉽다는 것을 알았습니다. 유감스럽게도 Django 신호는 동기식이므로 클라이언트에 대한 응답이 매우 느립니다. 또한 데몬이나 그 부분을 별도의 컴퓨터로 마이그레이션 할 수도 있지만 같은 방식으로 작동합니다 (RPC가 아니라 이벤트를 트리거하거나 메시지를 보내는 것). (이것은 Erlang의 접근 방식처럼 들릴 수 있습니다.)Python 용 이벤트 프레임 워크?
검증 된 방법을 사용하여 프로세스 간 통신 (예 : RabbitMQ)을 수행하고 최소한의 상용구가 필요한 프레임 워크가 있습니까?
André Paramés가 제안한 Twisted는 더 간단한 코드를 선호합니다. 이게 Twisted에서 할 수 있니?
from events_framework import subscribe, trigger
from django.http import Client
http_client = Client() # just a sample
@subscribe('data_received'):
def reply(data):
http_client.post('http://www.example.com', data)
trigger('data_resent', data)
여기에 자세한 내용이 나와 있습니다. 일부 모델을 사용하고 다른 사람들에게 이벤트를 알리는 Django 뷰 파일이 있습니다. 무한히 실행되고 이벤트에 반응하는 독립형 데몬 스크립트가 있습니다.
이것은 단지 의사 코드인데, 나는 그것이 얼마나 쉬운지를 의미합니다.
# django_project/views.py (a Django views file)
from events_framework import publish, subscribe
from annoying import
@subscribe('settings_updated')
def _on_settings_update(event): # listens to settings_updated event and saves the data
Settings.object.get(user__id=event.user_id).update(event.new_settings)
@render_to('form.html')
def show_form(request): # triggers 'form_shown' event
publish('form_shown', {'user_id': request.user.id, 'form_data': request.GET})
return {...}
# script.py (a standalone script)
from events_framework import publish, subscribe
@subscribe('form_shown')
def on_form_shown(event): # listens to form_shown event and triggers another event
pass
result = requests.get('third party url', some_data)
publish('third_party_requested', {'result': result})
다시 말하면 장고 신호만으로는이 작업을 수행 할 수 없습니다. 일부 이벤트는 네트워크를 통해 게시해야하며 일부 이벤트는 로컬이지만 비동기식이어야합니다. 경량 이벤트 구동 강한 구성 요소 아키텍처 파이썬 프로그래밍 언어에 대한 비동기 응용 프로그램 프레임 워크 :
이
from events_framework import Environment
env = Environment() # will connect to default rabbitmq server from settings.
왜이 'javascript'에 태그를 지정 했습니까? 정말 관련이 없습니다. 이벤트 중심 프레임 워크에 관해서는 [Twisted] (http://twistedmatrix.com/trac/)를 보았습니까? –
JS & Erlang 태그를 제거했습니다 ... –
안녕하세요 세상의 예가 제가 머리를 긁적 거리게했습니다. 얼마나 많은 상용구 또는 이상한 코드가 필요합니까? –