Skip to content

Commit

Permalink
Refactored schedulers
Browse files Browse the repository at this point in the history
  • Loading branch information
syrusakbary committed Jul 13, 2017
1 parent f991ae9 commit e4fa2e3
Show file tree
Hide file tree
Showing 9 changed files with 28 additions and 16 deletions.
3 changes: 1 addition & 2 deletions .travis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,8 @@ language: python
sudo: false
python:
- 2.7
- 3.3
- 3.4
- 3.5
- 3.6
- pypy
before_install:
- |
Expand Down
9 changes: 2 additions & 7 deletions promise/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -24,11 +24,7 @@
get_default_scheduler,
set_default_scheduler
)
from .scheduler import SyncScheduler
try:
from .thread_sheduler import ThreadScheduler
except ImportError:
ThreadScheduler = None
from .schedulers.immediate import ImmediateScheduler

__all__ = [
'Promise',
Expand All @@ -38,6 +34,5 @@
'async_instance',
'get_default_scheduler',
'set_default_scheduler',
'SyncScheduler',
'ThreadScheduler'
'ImmediateScheduler'
]
4 changes: 2 additions & 2 deletions promise/async_.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,8 @@ class Async(object):

def __init__(self, schedule):
self.is_tick_used = False
self.late_queue = collections.deque()
self.normal_queue = collections.deque()
self.late_queue = collections.deque() # type: ignore
self.normal_queue = collections.deque() # type: ignore
self.have_drained_queues = False
self.trampoline_enabled = False
self.schedule = schedule
Expand Down
9 changes: 5 additions & 4 deletions promise/promise.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,11 +13,12 @@
iterate_promise)
from .utils import deprecated, integer_types, string_types, text_type, binary_type, warn
from .promise_list import PromiseList
from .scheduler import SyncScheduler
# from .gevent_scheduler import GeventScheduler
# from .thread_scheduler import ThreadScheduler
from .schedulers.immediate import ImmediateScheduler
# from .schedulers.gevent import GeventScheduler
# from .schedulers.asyncio import AsyncioScheduler
# from .schedulers.thread import ThreadScheduler

async_instance = Async(SyncScheduler())
async_instance = Async(ImmediateScheduler())


def get_default_scheduler():
Expand Down
Empty file added promise/schedulers/__init__.py
Empty file.
11 changes: 11 additions & 0 deletions promise/schedulers/asyncio.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
from __future__ import absolute_import

from asyncio import get_event_loop


class AsyncioScheduler(object):
def __init__(self, loop=None):
self.loop = loop or get_event_loop()

def call(self, fn):
self.loop.call_soon(fn)
4 changes: 4 additions & 0 deletions promise/gevent_scheduler.py → promise/schedulers/gevent.py
Original file line number Diff line number Diff line change
@@ -1,13 +1,17 @@
from __future__ import absolute_import

from gevent.event import Event
import gevent


class GeventScheduler(object):
def call(self, fn):
# print fn
gevent.spawn(fn)

def wait(self, promise, timeout=None):
e = Event()

def on_resolve_or_reject(_):
e.set()

Expand Down
3 changes: 2 additions & 1 deletion promise/scheduler.py → promise/schedulers/immediate.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
from threading import Event


class SyncScheduler(object):
class ImmediateScheduler(object):
def call(self, fn):
try:
fn()
Expand All @@ -10,6 +10,7 @@ def call(self, fn):

def wait(self, promise, timeout=None):
e = Event()

def on_resolve_or_reject(_):
e.set()

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ def call(self, fn):

def wait(self, promise, timeout=None):
e = Event()

def on_resolve_or_reject(_):
e.set()

Expand Down

0 comments on commit e4fa2e3

Please sign in to comment.