기존 병원에서 수집한 데이터는 사진으로 촬영한 처방전 사진이었기 때문에, 활용해야 할 것은 처방전의 텍스트 형식입니다. 그래서 지난 2주 동안 사용자들에게 서버의 사진을 보여주고(당시 인원을 고용) 사용자들이 사진을 바탕으로 텍스트 정보를 입력할 수 있는 작은 프로그램을 작성했습니다.
예전에는 Java를 사용하여 웹 페이지를 작성했는데 최근에는 Python을 사용하여 기계 학습을 배울 것이라고 생각했기 때문에 새로운 것을 사용하고 싶고 프로그램이 상대적으로 작기 때문에 고려했습니다. 저장을 위해 mongodb를 사용합니다(실제로는 필요하지 않지만).
기본 아키텍처는 다음과 같습니다: (백엔드 언어) Python + (웹 프레임워크 및 웹 서버) tornado + (데이터베이스) mongodb + (프로세스 관리) 감독자 + (역방향 프록시) nginx
(1) python: Liao Xuefeng의 Python 튜토리얼을 보고 있어요
기본 문장 몇 개를 익히고, 이해가 안 되면 다시 확인해 보세요.
(2) 토네이도: 이 튜토리얼을 보고 배우기 시작했어요
tornado는 사용하기 매우 빠릅니다. 봄에는 전달자처럼 직접 요청을 매핑할 수 있고 tomcat과 같은 특정 포트에서 http 요청을 직접 모니터링할 수 있습니다. Tornado는 이러한 모든 작업을 get 및 Just post 메서드만 작성하면 됩니다. .
나머지는 자바 웹과 거의 동일합니다. springMVC 및 최대 절전 모드 프레임워크가 없으면 Python 패키지에서 컨트롤러, 서비스 및 DAO를 직접 계층화할 수 있습니다.
(3) mongodb: 비관계형 데이터베이스(mongodb에서는 문서라고 함)의 각 데이터 행이 동일한 필드 이름을 가질 필요는 없습니다. 다소 다를 수 있습니다. 또 다른 점은 트랜잭션이 지원되지 않고, 파이썬에서 여러 개의 읽기, 쓰기 문을 실행할 때 롤백할 수 있는 방법이 없기 때문에 프로그램 내 동시성으로 인해 발생하는 문제를 방지할 수 있는 방법을 찾아야 한다는 것입니다.
예를 들어 컬렉션에서 상태가 0인 문서를 찾아서 1로 업데이트해야 합니다. 즉, 사용자가 수정한 후 상태를 2로 설정한 다음 다시 넣어야 합니다. 여기서 0은 탐색하지 않음을 의미하고, 1은 탐색 중임을 의미하며, 2는 수정됨을 의미합니다. 이때 많은 사용자가 상태 0의 데이터를 동시에 획득했을 수 있습니다. 이는 우리의 바람에 반하며 많은 사람들이 동일한 데이터를 수정할 수 있게 합니다. update_one을 직접 고려하여 문서의 상태를 0에서 1로 변경한 다음 고유 필드를 추가하여 문서를 식별하고 이 고유 필드를 사용하여 문서를 찾을 수 있습니다. 이때 update_one 때문에 다른 사용자는 문서를 얻을 수 없습니다. 때가 되면 잠길 것이며, 다른 사람들은 이 데이터를 얻을 수 없습니다.
(4) supervisor: supervisor는 Python으로 개발된 프로세스 관리 프로그램으로, 일반 명령을 백그라운드 데몬으로 변환하고 프로세스 상태를 모니터링할 수 있습니다.
설치 후 /etc/supervisor/conf.d 디렉터리에 printprescription.conf 구성 파일을 추가하면 됩니다. 구성 예는 다음과 같습니다
구성이 완료되면 감독자 서비스를 열고 닫고 다시 시작할 수 있습니다. supervisorctl status를 사용하여 프로세스 상태를 확인할 수 있으며, 관련 로그 파일에서 오류 정보도 확인할 수 있습니다
(5) nginx: nginx는 포트 80을 모니터링하고 해당 요청을 다른 호스트 및 다른 포트로 전달할 수 있습니다. 여기에 표시되는 이미지의 경로는 tornado의 정적 경로가 아닙니다. js 및 css와 같은 프런트 엔드 정적 리소스를 서버의 다른 위치에 저장하므로 nginx 전달을 통해 이미지를 얻을 수 있습니다. 반면에 다른 포트(예: tornado가 수신하는 8001 포트)는 일반적으로 사용자에게 노출되지 않으므로 전달에는 nginx가 사용됩니다. 또한 위치 /static/ 지시어는 nginx에게 토네이도에 대한 요청을 프록시하는 대신 정적 디렉터리 파일을 직접 제공하도록 지시합니다. nginx는 토네이도보다 정적 파일을 더 효율적으로 제공할 수 있습니다.
nginx를 설치한 후 관련 구성 파일을 확인하고 다음 문장을 찾으세요: include /etc/nginx/sites-enabled/*. 구성을 위해 이 디렉터리에 새 구성 파일을 만들 수 있습니다
구성 예는 하단에 http://127.0.0.1:8001/ 이라는 점에 유의하세요. 여기서 마지막 슬래시를 입력하지 않으면 사용자가 "host"에 액세스할 때 실제로 위의 printprescription이 추가됩니다. /printprescription"은 Access "Host:8001/printprescription"과 동일합니다. 토네이도에 Host:8001/ 요청을 매핑했으므로 이때 404가 나타납니다.
(6)opencv:一个计算机视觉库,实现了图像处理和计算机视觉方面的很多通用算法。由于之前采集数据的时候在处方图片数据中混杂了人脸图片,所以采用oepncv里的算法检测人脸,如果是人脸则删除该记录。然而还是会残留一些人脸图片,需要人工清洗,这个数据好像之前有师兄清洗过,到时候拿过来重构一下数据库。
ps:安装opencv的时候imshow报错,虽然imshow用不到,但是强迫症使然,搞了我一天,来来回回装了十多次,最后还是没搞定,真是心力交瘁,特想吐嘈:垃圾opencv!毁我青春!颓我精神!耗我时间!磨我意志!浪费人生!!!
好吧我就随便说说,回头还要靠它干活。
cv2.error: /io/opencv/modules/highgui/src/window.<span style="color: #0000ff">cpp</span>:<span style="color: #800080">583</span>: error: (-<span style="color: #800080">2</span>) The <span style="color: #0000ff">function</span> is not implemented. Rebuild the library with Windows, GTK+ <span style="color: #800080">2</span>.x or Carbon support. If you are on Ubuntu or Debian, <span style="color: #0000ff">install</span> libgtk2.<span style="color: #800080">0</span>-dev and <span style="color: #0000ff">pkg-config</span>, <span style="color: #0000ff">then</span> re-run cmake or configure script <span style="color: #0000ff">in</span> <span style="color: #0000ff">function</span> cvShowImage
위 내용은 우분투에서 python+tornado+supervisor+nginx 배포의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!