하루에없는 100 개 이상의 전자 메일 메시지를 보내, 내 응용 프로그램에서 다음과 같은 논리를 만들 : 데이터 저장소에 저장되어 전송 될할당량이 보충 될 때까지 memcache 값을 저장하는 방법은 무엇입니까? 위해
- 모든 전자 메일 메시지를;
- 15 분마다 실행되는 cron 작업이 있습니다.
- 이 작업은 대기열에서 전자 메일 메시지를 보내는 것입니다.
- 데이터 스토어 큐에서 메시지를 읽기 전에 작업이 memcache (
is_todays_quota_exceeded
)에서 값을 읽습니다. - 그렇지 않은 경우 메시지를 보내보십시오. 완료되면이 메시지의 큐 상태를 업데이트하십시오.
apiproxy_errors.OverQuotaError
으로 실패 할 경우 과 같은is_todays_quota_exceeded
을 작성하십시오.
문제점은 GAE가 끝날 때까지 (즉, 할당량이 보충 될 때까지) memcache 값을 저장해야한다는 것입니다. 얼마나 빨리 계산할 수 있습니까?
매일 할당량은 태평양 표준시 자정에 매일 보충됩니다.
업데이트. 나는 다음을 시도했다 :
now = datetime.datetime.now()
current_time = datetime.datetime(year=now.year, month=now.month, day=now.day, hour=now.hour, minute=now.minute, second=now.second)
end_of_today = datetime.datetime(year=now.year, month=now.month, day=now.day, hour=23, minute=59, second=59)
diff = end_of_today - current_time
logging.info(diff.total_seconds())
그러나 그것은 마지막 줄에서 실패한다 - 'datetime.timedelta' object has no attribute 'total_seconds'
. 나는 파이썬 2.5를 사용하는데, 나중에 구현 된 total_seconds
처럼 보입니다.
2 upd2. 다음은 오늘의 마지막까지 초 수를 계산하는 데 도움이 : 클라우드
now = datetime.datetime.utcnow()
diff = (23*60*60 + 59*60 + 59*60) - (now.hour*60*60 - now.minute*60 - now.second*60)
logging.info(diff)
흠, 흥미로운 아이디어;). 하지만 그것은 응용 프로그램 논리를 복잡하게 만들 것이라고 생각하므로 memcache 저장소의 정확한 시간을 계산하고 정의하는 것을 선호합니다. –
나는 이것이 어떤 식 으로든 복잡하게한다고 생각하지 않는다. 그것은 하루를 다시 시작하는 매우 간단한 크론 작업이다! 더 많은 것을 정리할 수 있고, 시간을 계산할 때'datatime.utcnow()'를 사용하는 것을 멈출 것인가? – Lipis
계산과 관련하여 - 내가 가진 첫 번째 질문은 오늘의 끝을 계산하는 방법입니다. 날짜, 시간, 시간 = 23, 분 = 59, 초 = 60)'? –