summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlex Grönholm <alex.gronholm@nextday.fi>2018-01-03 21:59:53 +0200
committerAlex Grönholm <alex.gronholm@nextday.fi>2018-01-03 22:02:06 +0200
commitc385f948e9f5b4004023bca5cc19a40f3a19af75 (patch)
tree51e4b19056eca08082514b7a21724913bca8d6a5
parentb9c2bd6aa328e72860c13e61fc4b5bd2c4d8d51c (diff)
downloadapscheduler-c385f948e9f5b4004023bca5cc19a40f3a19af75.tar.gz
Fixed OverflowError on Windows when wait_seconds was too large
Fixes #263.
-rw-r--r--apscheduler/schedulers/base.py5
-rw-r--r--apscheduler/util.py6
-rw-r--r--docs/versionhistory.rst6
3 files changed, 13 insertions, 4 deletions
diff --git a/apscheduler/schedulers/base.py b/apscheduler/schedulers/base.py
index d08558f..d777ed9 100644
--- a/apscheduler/schedulers/base.py
+++ b/apscheduler/schedulers/base.py
@@ -19,7 +19,8 @@ from apscheduler.jobstores.base import ConflictingIdError, JobLookupError, BaseJ
from apscheduler.jobstores.memory import MemoryJobStore
from apscheduler.job import Job
from apscheduler.triggers.base import BaseTrigger
-from apscheduler.util import asbool, asint, astimezone, maybe_ref, timedelta_seconds, undefined
+from apscheduler.util import (
+ asbool, asint, astimezone, maybe_ref, timedelta_seconds, undefined, TIMEOUT_MAX)
from apscheduler.events import (
SchedulerEvent, JobEvent, JobSubmissionEvent, EVENT_SCHEDULER_START, EVENT_SCHEDULER_SHUTDOWN,
EVENT_JOBSTORE_ADDED, EVENT_JOBSTORE_REMOVED, EVENT_ALL, EVENT_JOB_MODIFIED, EVENT_JOB_REMOVED,
@@ -999,7 +1000,7 @@ class BaseScheduler(six.with_metaclass(ABCMeta)):
wait_seconds = None
self._logger.debug('No jobs; waiting until a job is added')
else:
- wait_seconds = max(timedelta_seconds(next_wakeup_time - now), 0)
+ wait_seconds = min(max(timedelta_seconds(next_wakeup_time - now), 0), TIMEOUT_MAX)
self._logger.debug('Next wakeup is due at %s (in %f seconds)', next_wakeup_time,
wait_seconds)
diff --git a/apscheduler/util.py b/apscheduler/util.py
index 63ac8ac..d9beb18 100644
--- a/apscheduler/util.py
+++ b/apscheduler/util.py
@@ -1,10 +1,11 @@
"""This module contains several handy functions primarily meant for internal use."""
from __future__ import division
+
from datetime import date, datetime, time, timedelta, tzinfo
from calendar import timegm
-import re
from functools import partial
+import re
from pytz import timezone, utc
import six
@@ -21,7 +22,8 @@ except ImportError:
__all__ = ('asint', 'asbool', 'astimezone', 'convert_to_datetime', 'datetime_to_utc_timestamp',
'utc_timestamp_to_datetime', 'timedelta_seconds', 'datetime_ceil', 'get_callable_name',
- 'obj_to_ref', 'ref_to_obj', 'maybe_ref', 'repr_escape', 'check_callable_args')
+ 'obj_to_ref', 'ref_to_obj', 'maybe_ref', 'repr_escape', 'check_callable_args',
+ 'TIMEOUT_MAX')
class _Undefined(object):
diff --git a/docs/versionhistory.rst b/docs/versionhistory.rst
index 4a2c233..9560f05 100644
--- a/docs/versionhistory.rst
+++ b/docs/versionhistory.rst
@@ -4,6 +4,12 @@ Version history
To find out how to migrate your application from a previous version of
APScheduler, see the :doc:`migration section <migration>`.
+3.5.1
+-----
+
+* Fixed ``OverflowError`` on Windows when the wait time is too long
+
+
3.5.0
-----