123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475 |
- import pydux
- import asyncio
- import time
- import threading
- import counter
- import calculate
- import pydux_thunk
- def loop_in_thread(loop):
- async def main_task():
- print('Starting loop')
- while True:
- await asyncio.sleep(1)
- pending = asyncio.Task.all_tasks()
- my_sum = 0
- for task in pending:
- if not task.done():
- my_sum += 1
- if my_sum == 1:
- break
- print('All tasks finished, exiting loop.')
- asyncio.set_event_loop(loop)
- loop.run_until_complete(main_task())
- loop.close()
- loop = asyncio.get_event_loop()
- t = threading.Thread(target=loop_in_thread, args=(loop,))
- t.start()
- def log_middleware(store):
- def wrapper(next_):
- def log_dispatch(action):
- print('Dispatch Action:', action)
- return next_(action)
- return log_dispatch
- return wrapper
- initial_state = {
- 'counter': counter.initial_state,
- 'calculate': calculate.initial_state
- }
- root_reducer = pydux.combine_reducers({
- 'counter': counter.reducer,
- 'calculate': calculate.reducer
- })
- middleware = pydux.apply_middleware(log_middleware, pydux_thunk.middleware)
- store = pydux.create_store(root_reducer, initial_state, middleware)
- def my_subscriber():
- print('Current state', store.get_state())
- store.subscribe(my_subscriber)
- print('starting.')
- store.dispatch(counter.ActionCreators.increment())
- store.dispatch(counter.ActionCreators.increment())
- store.dispatch(counter.ActionCreators.increment())
- store.dispatch(calculate.ActionCreators.calculate(3, 4))
- #store.dispatch(my_thunk(4))
- time.sleep(2)
- #store.dispatch(ActionCreators.decrement())
- #store.dispatch(my_thunk(3))
- time.sleep(1)
- #store.dispatch(my_bump())
- while loop.is_running():
- time.sleep(1)
- print('Loop done, closing task.')
- t.join()
- print('Task finished, bye!')
|