Move brokerd spawner to `brokers.core`
							parent
							
								
									1fd033d351
								
							
						
					
					
						commit
						5e9c38039c
					
				| 
						 | 
					@ -5,16 +5,25 @@ import inspect
 | 
				
			||||||
from types import ModuleType
 | 
					from types import ModuleType
 | 
				
			||||||
from typing import List, Dict, Any, Optional
 | 
					from typing import List, Dict, Any, Optional
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					from async_generator import asynccontextmanager
 | 
				
			||||||
 | 
					import tractor
 | 
				
			||||||
 | 
					
 | 
				
			||||||
from ..log import get_logger
 | 
					from ..log import get_logger
 | 
				
			||||||
from .data import DataFeed
 | 
					from .data import DataFeed
 | 
				
			||||||
 | 
					from . import get_brokermod
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
log = get_logger('broker.core')
 | 
					log = get_logger('broker.core')
 | 
				
			||||||
 | 
					_data_mods = [
 | 
				
			||||||
 | 
					    'piker.brokers.core',
 | 
				
			||||||
 | 
					    'piker.brokers.data',
 | 
				
			||||||
 | 
					]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
async def api(brokermod: ModuleType, methname: str, **kwargs) -> dict:
 | 
					async def api(brokername: str, methname: str, **kwargs) -> dict:
 | 
				
			||||||
    """Make (proxy through) a broker API call by name and return its result.
 | 
					    """Make (proxy through) a broker API call by name and return its result.
 | 
				
			||||||
    """
 | 
					    """
 | 
				
			||||||
 | 
					    brokermod = get_brokermod(brokername)
 | 
				
			||||||
    async with brokermod.get_client() as client:
 | 
					    async with brokermod.get_client() as client:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        meth = getattr(client.api, methname, None)
 | 
					        meth = getattr(client.api, methname, None)
 | 
				
			||||||
| 
						 | 
					@ -39,6 +48,24 @@ async def api(brokermod: ModuleType, methname: str, **kwargs) -> dict:
 | 
				
			||||||
        return await meth(**kwargs)
 | 
					        return await meth(**kwargs)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@asynccontextmanager
 | 
				
			||||||
 | 
					async def maybe_spawn_brokerd_as_subactor(sleep=0.5, tries=10, loglevel=None):
 | 
				
			||||||
 | 
					    """If no ``brokerd`` daemon-actor can be found spawn one in a
 | 
				
			||||||
 | 
					    local subactor.
 | 
				
			||||||
 | 
					    """
 | 
				
			||||||
 | 
					    async with tractor.open_nursery() as nursery:
 | 
				
			||||||
 | 
					        async with tractor.find_actor('brokerd') as portal:
 | 
				
			||||||
 | 
					            if not portal:
 | 
				
			||||||
 | 
					                log.info(
 | 
				
			||||||
 | 
					                    "No broker daemon could be found, spawning brokerd..")
 | 
				
			||||||
 | 
					                portal = await nursery.start_actor(
 | 
				
			||||||
 | 
					                    'brokerd',
 | 
				
			||||||
 | 
					                    rpc_module_paths=_data_mods,
 | 
				
			||||||
 | 
					                    loglevel=loglevel,
 | 
				
			||||||
 | 
					                )
 | 
				
			||||||
 | 
					            yield portal
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
async def stocks_quote(
 | 
					async def stocks_quote(
 | 
				
			||||||
    brokermod: ModuleType,
 | 
					    brokermod: ModuleType,
 | 
				
			||||||
    tickers: List[str]
 | 
					    tickers: List[str]
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue