일부 하드웨어를 처리하고 데이터베이스와 상호 작용하며 직렬 회선이나 소켓을 통해 명령을받는 C++로 작성된 레거시 (그러나 내부적으로 유지 관리되는) 응용 프로그램이 있습니다 ... 간단히 말해서 사소한 일을합니다. 일의 양.파이썬으로 C++ 응용 프로그램 확장
이 응용 프로그램은 Linux (ARM/Buildroot)에서 실행됩니다.
이제 제어 인터페이스를 개선하여 RESTful API를 추가해야합니다.
나는 파이썬 확장을 통해 그렇게 할 수있는 가능성을 모색 중이다.
참고 저는 C++/java 프로그래머이며 파이썬에 능숙하지는 않지만 기본을 알고 있습니다.
일반 아이디어는 다음과 같습니다
- 는 C++ 응용 프로그램에서 스레드로 파이썬 인터프리터를 시작합니다.
- 들어오는 RESTful 요청을 처리하려면 Flask/jinja2 (또는 일반 Bottle)를 사용하십시오.
- Python에 C++ 클래스 몇 개를 노출합니다.
- Python에서 필요한 액션을 수행하기위한 적절한 C++ 메소드를 호출하십시오. (우리의 하드웨어 너무 무거운 가능)에서만 관심을 보인다
- pybind11을 (
- Boost.Python :
나는 공식 문서 (주로 일반 C 관한)과 몇 가지 대안을 포함하여 연구 파이썬 확장, 삽입하지 않음).
- http://www.codeproject.com/Articles/11805/Embedding-Python-in-C-C-Part-I (파이썬에 C++ 클래스에 대한 액세스 권한을 부여하지 않고 임베딩 만 다룹니다).
질문은 다음과 같습니다
- 이 어떤 의미가 있습니까?
- 이 작업을 수행하는 데 방해가되는 최소한의 방법은 무엇입니까?
- lib/framework에서 사용하는 것이 좋습니다?
- 이 줄을 따라 튜토리얼 프로젝트가 있습니까?
나는 꽤 광범위한 질문을 알고 있지만 첫 번째 의견이 나를 올바른 방향으로 가르쳐 주 자마자 범위를 좁히기를 희망합니다.
REST API를 응용 프로그램에 임베드 할 필요가 있습니까? 소켓 기반 제어 인터페이스가 이미있는 경우 REST API에서이를 사용하지 않고 독립 실행 형 응용 프로그램으로 사용하는 것이 어떻습니까? –
@ DanMašek : 현재 제어 인터페이스는 매우 제한되어 있으며 수동으로 수행해야하는 데이터베이스 설정은 다루지 않습니다. 또한보고 기능은 다소 제한적입니다. 필자는 Python에서 직접 데이터베이스 액세스 기능을 구현하고 기능 쿼리에 대한보다 나은 응답을 제공 할 계획입니다. 기본적으로 우리는 현존하는 응용 프로그램을 그대로 유지하면서 파이썬에서 주로 새로운 기능을 추가 할 가능성을 모색하고 있습니다. 추가 개발은 기존 기능을 C++에서 Python으로 이동하고 레거시 인터페이스를 삭제하는 것입니다 (먼 미래!). – ZioByte