그래서 사용자가 기존 텍스트 줄 그룹에 새로운 텍스트 줄을 추가 할 수있는 장고 응용 프로그램을 만들고 있습니다. 그러나 여러 사용자가 텍스트 줄의 동일한 그룹에 동시에 줄을 추가하는 것을 원하지 않습니다. 그래서 BoolField isBeingEdited를 만들었습니다. 일단 사용자가 특정 그룹을 추가하기로 결정하면 True로 설정됩니다. Bool이 True이면 편집을 제출할 때까지 그룹을 추가 할 수 없으므로 Bool이 다시 False로 설정됩니다. 누군가가 편집을 결정한 다음 마음을 바꾸거나 잊어 버리지 않는 한 괜찮습니다. 10 분 정도 지나면 isBeingEdited가 False로 되돌아 가길 바래요. 이것은 cron을위한 일입니까 아니면 거기에 더 쉬운 것이 있습니까? 어떤 제안?django에서 시간 초과 기능 설정하기
1
A
답변
4
변경 모델을 고정하려면 "잠금 시간"
- 에 부울는, 현재 시간으로 잠금 시간을 설정합니다.
- 모델 잠금을 해제하려면 잠금 시간을 없음으로 설정하십시오.
- "is_locked"메소드를 추가하십시오. 이 메서드는 현재 시간이 잠금 시간 후 10 분 이상이면 "잠기지 않음"을 반환합니다.
는이 플래그를 확인하고 설정을 해제하기 위해 크론없이하고 DB에 정규 안타없이 당신에게 당신의 제한 시간을 제공합니다. 대신, 위젯에 관심이있는 경우에만 시간이 확인됩니다 이 모델이 잠겨 있습니다. Cron은 모두 모델을 점검해야 할 것입니다.
from django.db import models
from datetime import datetime, timedelta
# Create your models here.
class yourTextLineGroup(models.Model):
# fields go here
lock_time = models.DateTimeField(null=True)
locked_by = models.ForeignKey()#Point me to your user model
def lock(self):
if self.is_locked(): #and code here to see if current user is not locked_by user
#exception/bad return value here
pass
self.lock_time = datetime.now()
def unlock(self):
self.lock_time = None
def is_locked(self):
return self.lock_time and datetime.now() - self.lock_time < timedelta(minutes=10)
코드는 위의 호출자가 잠금을 호출 한 후 방법을 저장하거나 잠금을 해제 호출한다고 가정합니다.
관련 문제
- 1. PHP 시간 초과 및 FTP 기능
- 2. Spring Security 3.0으로 세션 시간 초과 기간 설정하기
- 3. 회원 시간 초과 및 세션 시간 초과
- 4. 시간 초과
- 5. Django에서 Selenium을 실행하는 중에 시간 초과 오류가 발생했습니다.
- 6. 플렉스에서 기능 테스트 설정하기
- 7. ASP.Net AJAX 시간 초과 요청이 시간 초과 기간보다 오래 완료되었지만
- 8. nginx php5-fpm 업스트림 시간 초과 (110 : 연결 시간 초과)
- 9. PageMethod 기본 시간 초과
- 10. jQuery에서 시간 초과 설정.
- 11. NSURLConnection 시간 초과?
- 12. SQL 서버 시간 초과
- 13. 플렉스 스트리밍 시간 초과
- 14. IDbTransaction 롤백 시간 초과
- 15. ASP.NET의 세션 시간 초과
- 16. Tomcat 요청 시간 초과
- 17. 자동 세션 시간 초과
- 18. Silverlight - 시간 초과 문제
- 19. ASIHTTPRequest 시간 초과
- 20. QNetworkAccessManager 시간 초과
- 21. MSMQ -받는 시간 초과
- 22. jQuery 시간 초과 설정
- 23. 세션 시간 초과 문제
- 24. 잡기 시간 초과 오류가
- 25. SQL은 연결 시간 초과
- 26. `eval` 호출 시간 초과
- 27. 타이머가있는 세션 시간 초과
- 28. 아음속 시간 초과 명령
- 29. Java - url 시간 초과
- 30. PHP와 MySQLi 시간 초과
is_locked 메서드가 여전히 잠금 시간을 확인하기 위해 db에 충돌 한 다음 다시 해당 값을 None으로 변경하거나 누락 되었습니까? (나는 방법의 영역에서 너무 지식이 없다). 또한, 예를 들어? (나는 그것을 얻을 것이라고 생각하지만 아마도 그렇지는 않다) –
DB는 여전히 공격을 받게 될 것이다. 그러나 잠금 장치가 설정되거나 사용되지 않는 경우에도 cron 작업은 정기적으로 db에 충돌해야합니다. 이 메소드는 잠금 기능이 사용되는 동안에 만 필요시 DB를 히트합니다. –
is_locked 메서드에서 "self.lock_time - datetime.now()"를 "datetime.now() - self.lock_time"으로 변경했지만 지금은 A + –