타사 웹 API에서 실시간 데이터를 가져 와서이를 MySQL 데이터베이스에 저장하고 HTTP/JSON API를 통해 사용할 수 있도록 해주는 웹 백엔드/API 공급자를 연구 중입니다.이벤트 릿/일반 비동기 입출력 작업 세분화
플라시보를 제공하고 SQLAlchemy Core를 사용하여 DB로 작업하고 있습니다.
실시간 데이터 잡는 부분에는 요청을 보내서 반환 된 XML을 파이썬 dict로 구문 분석하고 반환하여 타사 API를 래핑하는 함수가 있습니다. 이 API 래퍼를 호출 할 것입니다.
그런 다음 각 데이터를 사용하는 다른 메소드 내에서 이러한 함수를 호출하고 필요에 따라 처리 (예 : 시간대 변환 등) 한 다음 DB에 저장합니다. 우리는이 프로세서들을 호출 할 것입니다.
비동기 I/O 및 이벤트 릿에 대해 특별히 읽었으며 매우 감동했습니다.
나는 코드를 잡아 내 데이터를 통합 할거야,하지만 난 먼저 몇 가지 질문이있다 : 그것은 원숭이 패치 모든 것에 나를 위해 안전
입니까? 내가 플라스크, SQLAlchemy 및 다른 libs를 가지고 있다고 생각하면, (지연 바인딩이 없다고 가정 할 때) 원숭이 패치에 대한 단점이 있습니까?
작업을 분할해야하는 입체 성은 무엇입니까? 나는 주기적으로 프로세서를 생성하는 풀을 생성 할 생각이었다. 그런 다음 프로세서가 API 래퍼를 호출하는 부분에 도달하면 API 래퍼는 eventlet.green.urllib2를 사용하여 실제 HTTP 데이터를 가져 오는 GreenPile을 시작합니다. 이것은 좋은 접근 방법입니까?
- 타임 아웃 - 나는 아무런 글렌드 글도 걸리지 않도록하고 싶습니다. eventlet을 설정하는 좋은 접근 방법인가? 각 greenthread마다 10-15 초 가량 소요됩니까?
참고로 약 10 개의 서로 다른 실시간 데이터 세트가 있고 프로세서는 5 ~ 10 초마다 생성됩니다.
감사합니다.
귀하의 의견에 감사드립니다. 나는 Flask와 Async I/O를 섞지 않는다는 것에 동의한다 - 내 질문에는 분명하지 않아야하지만, API (Flask)는 패치되지 않은 비동기 I/O 프로세스가 별도로 실행된다. 데이터 그래버는 단순화 목적으로 SQLAlchemy Core (ORM 아님)를 사용하여 db에 쓰는 패치 된 프로세스에서 실행됩니다. – user1094786
OK,이 경우 이미이 방법을 사용하고 있습니다. 데이터 그래버에 비동기가 필요한지 궁금합니다. 특히 데이터 수집기가 CPU를 많이 사용하는 경우 다른 동시성 방법 (다중 처리, 셀러리 등)을 사용하는 것이 좋습니다. 셀러리에 대해 –
+1. 작업은 좋은 후보로 보입니다. – Tisho