2009-12-03 5 views
0

제한된 수의 제품에 대해 등록/지불 애플리케이션을 생성하기 위해 장고를 사용하고 있습니다. 사용자가 제품을 구매할 때 해당 제품이 "이미 가져온 것"으로 표시되도록 타이머를 만들고 싶습니다. 그러나 사용자가 구매를 완료하지 않고 타이머가 만료 된 사용자는 제품이 "사용 가능"상태로 돌아갑니다. 사용자가 구매를 완료하면 타이머가 취소되어 제품의 상태가 "이미 사용됨"으로 영구히 남아 있습니다.Django의 타이머 객체

나는 python의 사전을 사용하여 파리의 타이머 객체를 인스턴스화했지만 약 30 %의 시간이 걸렸지 만 타이머를 취소 할 때 "키 오류"가 발생합니다.

누군가 날 장고에서 이것을하기위한 적절한 방법에 대한 아이디어를 줄 수 있습니까?

대단히 감사합니다.

마크

장고 응용 프로그램이 여러 프로세스에서 실행할 수 있기 때문에 당신은 몇 가지의 프로세스/메모리 타이머 객체를 사용해서는 안

답변

-2

포크. 모델에 제품에 대한 세 가지 상태를 사용하십시오 (available, takenpurchased). 사용자가 제품을 taken으로 표시하는 작업을 시작하면 purchased이 아닌 경우 제품을 available으로 3 분 안에 표시하는 새 프로세스를 생성합니다.

+0

Brilliant! 매력처럼 일했습니다. 도와 주셔서 대단히 감사합니다. –

+2

-1 데이터 무결성을 유지하기위한 메모리 내 웹 서버 프로세스의 지속성에 의존하는 것은 웹 앱의 끔찍한 생각입니다. 기억의 낭비는 말할 것도없이 ... –

+0

칼, 상황을 재고하면서, 이것이 어떻게 완전한 증거가 아닌지 이해합니다. 그러나 프로젝트의 작은 규모뿐만 아니라 예산과 시간 제약을 고려할 때, 나는 그것을 그대로 두어야한다. 하지만 다음에 계획 # 3을 진행할 것입니다. –

1

... 내가 좋아하는 데이터베이스에서이 "타이머"를 (만들 제안

"만료 "제품 모델의 datetime 필드) 만료 된 개체를 사용할 수 있도록 표시 할 cron 작업을 사용하십시오.

+0

당신의 도움에 감사드립니다! –

6

나는 약간의 복잡성을 줄 수 있기 때문에 그런 상황에서 타이머를 사용하지 않을 것이다. 프로세스가 다시 시작되면 타이머는 어떻게됩니까? 정기적으로 프로세스를 다시 시작하는 일부 인터넷 제공 업체의 경우에는 그렇지 않습니다. 어쩌면 당신은 비슷한 상황에 직면하고 있습니다. 제품을 사용할 수 또는

가능한 제품의 목록이 가득 할 것입니다하지 않을 경우

나는 제품이 촬영할 때 알고 알고 위해 그것을 사용하는 테이블에 'taken_time'datetimefield를 추가 'available'제품 및 'taken_time'이 (현재 시간 - 허용 지연)보다 낮은 경우 'taken'

관리하는 한 외부 프로세스로 상태를 변경할 필요가 없다고 생각합니다. 비즈니스 논리에서 올바르게

도움이되기를 바랍니다.

추 신 : 죄송합니다. 프랑스에서 꽤 늦었고 제 견해를 설명하는 간단한 방법을 찾기가 어려웠습니다 :-)

+0

이 대답은 "받아 들여진"대답이 아니라 "장고에서 이것을하기위한 적절한 방법"입니다. –

+0

도와 주셔서 감사합니다. 내 상황을 고려할 때, 계획 # 1과 함께 가야했지만, 이것이 앞으로 확실히 사용할 좋은 아이디어입니다. 다시 한 번 감사드립니다! –