문제

연락 양식이있는 웹 사이트가 있습니다. 사용자는 이름, 이메일 및 메시지를 제출하고 사이트는 나에게 세부 정보를 이메일로 보냅니다.

매우 때때로 내 서버는 이메일 시스템에 문제가 있으므로 사용자에게 오류가 발생하고 연락처 세부 정보가 손실됩니다. (말하지 마세요 : 더 나은 서버를 얻으십시오. 모든 서버는 지금 이메일이 줄어들 수 있으며 많은 제출물을 얻습니다).

메일 전송 함수가 오류 코드로 반환되는 경우 사용자의 세부 정보를 저장할 수있는 시스템을 구현하고 싶습니다. 그런 다음 추가 제출마다 저장된 제출물을 확인하고 저에게 보내려고 노력하십시오.

그러나 데이터를 저장하는 방법?

파이썬을 사용하고 있으므로 사용에 대해 생각했습니다 선반 (단일 파일 반사 바이스). 아니면 누군가가 더 나은 데이터 형식을 제안 할 수 있습니까? (전체 데이터베이스 솔루션이 과잉 일 것이라고 생각합니다.)

단일 파일 접근법에서 볼 수있는 문제는 경주 조건: 동시에 두 개 이상의 실패한 이메일이 데이터 파일을 두 번 편집하여 데이터 손상을 초래합니다.

그래서 뭘 할건데? 멀티 파일 솔루션, 파일 잠금 또는 다른 것?

도움이 되었습니까?

해결책

환경에서 전자 메일 전송 기능을 구현하면 분리 된 방식으로 수행합니다. 예를 들어 사용자는 데이터베이스에 저장되는 데이터를 제출합니다. 그런 다음 실행되고 데이터베이스를 쿼리하고 이메일을 보내는 별도의 서비스가 있습니다. 이렇게하면 전자 메일 서버 문제가있는 경우 서비스는 나중에 다시 시도하며 데이터와 사용자 신뢰도를 잃어 버리지 않습니다.

다른 팁

노력하다 sqlite. 기본값이 있습니다 파이썬 바인딩 표준 라이브러리에서 유용한 수준의 부하를 위해 작동해야합니다 (또는 내가 말하면)

제안 된대로 SQLITE를 사용할 수 있습니다. 주요 질문은 : 사람은 어떻게 "많은 제출물"입니까? 나는 이것이 작동 할 것입니다. 그렇지 않으면 데이터베이스 파일이 항상 잠겨 있고 다른 문제가 있습니다.

그러나 당신은 또한 그것을 평범하고 어리 석고 간단하게 유지할 수 있습니다 : 파일을 디스크에 작성하십시오. 모든 요약에 대해 파일은 임시 디렉토리 (메일 서버가 다운 된 경우)에 기록됩니다. 그런 다음 디렉토리를 읽고 메일을 보내는 MailServer 스타트 업 스크립트에 몇 줄을 추가합니다. 데이터베이스, 잠금 문제 없음 및 할당량이 설정된 디렉토리를 사용하는 경우 (또는 고정 된 크기의 Ramdisk) 문제가 발생하지 않아야합니다.

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