เดเดณเตเดณเดเดเตเด เดชเดเตเดเดฟเด
-
เดญเดพเดเด II: เดเดเดจเตเดฑเตเดฎเดพเดฐเตเด เดเตเดฎเตเดเดณเตเด
เดจเดฎเตเดฎเตพ เดเดตเดฟเดเต เดเดจเตเดคเดพเดฃเต เดเตเดฏเตเดฏเตเดจเตเดจเดคเต?
เด เดคเดฟเดจเดพเตฝ, เดฐเดฃเตเดเดพเด เดญเดพเดเด. เดจเตเดฐเดคเตเดคเต เดเดดเตเดคเดฟเดฏเดคเตเดชเตเดฒเต, เด เดคเดฟเตฝ เดเดเตเดเตพ เดเดจเดฟเดชเตเดชเดฑเดฏเตเดจเตเดจเดต เดเตเดฏเตเดฏเตเด:
-
เดจเดฎเตเดเตเดเต เดเดตเดถเตเดฏเดฎเตเดณเตเดณ เดเตปเดกเต เดชเตเดฏเดฟเดจเตเดฑเตเดเตพเดเตเดเดพเดฏเตเดณเตเดณ เด เดญเตเดฏเตผเดคเตเดฅเดจเดเตพเดเตเดเตเดชเตเดชเด aiohttp-เดฏเดฟเตฝ เดเตฝเดซเดตเดพเดจเตเดฑเตเดเดฟเดจเดพเดฏเดฟ เดเดฐเต เดเตเดฑเดฟเดฏ เดเตเดฒเดฏเดจเตเดฑเต เดเดดเตเดคเดพเด.
-
เดธเตเดเตเดฏเตเดฐเดฟเดฑเตเดฑเดฟเดเดณเตเดเตเดฏเตเด เดฎเตเดฑเตเดฑเดพ เดตเดฟเดตเดฐเดเตเดเดณเตเดเตเดฏเตเด เดกเดพเดฑเตเดฑ เดถเตเดเดฐเดฟเดเตเดเตเดจเตเดจ เดเดฐเต เดเดเดจเตเดฑเดฟเดจเต เดจเดฎเตเดเตเดเต เดธเตเดทเตเดเดฟเดเตเดเดพเด.
เดชเดเตเดทเต, เดชเตเดฐเตเดเดเตเดฑเตเดฑเดฟเดจเดพเดฏเดฟ เดเดเตเดเตพ เดเตเดฏเตเดฏเตเดจเตเดจเดคเต เดเดคเดพเดฃเต, เดเตเดเดพเดคเต เดซเดพเดธเตเดฑเตเดฑเต เดเดตเตเดทเดฃเดคเตเดคเดฟเดจเตเดฑเต เด เดเดฟเดธเตเดฅเดพเดจเดคเตเดคเดฟเตฝ, เดเดพเดซเตเดเดฏเดฟเตฝ เดจเดฟเดจเตเดจเต เดเดตเดจเตเดฑเตเดเตพ เดธเตเดเตเดฐเตเด เดเตเดฏเตเดฏเตเดจเตเดจ เดเดเดจเตเดฑเตเดฎเดพเดฐเต เดเดเตเดเดจเต เดเดดเตเดคเดพเดฎเตเดจเตเดจเตเด เด เดคเตเดชเตเดฒเต เดเดฎเดพเตปเดกเตเดเตพ เดเดเตเดเดจเต เดเดดเตเดคเดพเดฎเตเดจเตเดจเตเด (เดฑเดพเดชเตเดชเตผ เดเตเดฒเดฟเดเตเดเต เดเตเดฏเตเดฏเตเด) เดเดเตเดเตพ เดชเด เดฟเดเตเดเตเด - เดเดเดจเตเดฑเต เดจเดฟเดฐเตเดเตเดทเดฟเดเตเดเตเดจเตเดจ เดตเดฟเดทเดฏเดคเตเดคเดฟเดฒเตเดเตเดเตเดณเตเดณ เดฎเดพเดจเตเดตเตฝ เดชเตเดทเต เดธเดจเตเดฆเตเดถเดเตเดเตพเดเตเดเดพเดฏเดฟ.
เดคเดฏเตเดฏเดพเดฑเดพเดเตเดเตฝ
เดเตฝเดซเดตเดพเดจเตเดฑเตเดเต เดเตเดฒเดฏเดจเตเดฑเต
เดเดฆเตเดฏเด, เดเตฝเดซเดตเดพเดจเตเดฑเตเดเดฟเดฒเตเดเตเดเตเดณเตเดณ เด เดญเตเดฏเตผเดคเตเดฅเดจเดเตพเดเตเดเดพเดฏเดฟ เดจเดฎเตเดเตเดเต เดเดฐเต เดเตเดฑเดฟเดฏ aiohttp เดเตเดฒเดฏเดจเตเดฑเต เดเดดเตเดคเดพเด.
เดธเตเดชเตเดพเดฏเตเดฒเตผ
import urllib.parse as urlparse
from io import StringIO
from typing import Any, Dict, List, Union
import aiohttp
import pandas as pd
import stringcase
from loguru import logger
from horton.config import API_ENDPOINT
class AlphaVantageClient:
def __init__(
self,
session: aiohttp.ClientSession,
api_key: str,
api_endpoint: str = API_ENDPOINT,
):
self._query_params = {"datatype": "json", "apikey": api_key}
self._api_endpoint = api_endpoint
self._session = session
@logger.catch
def _format_fields(self, data: Dict[str, Any]) -> Dict[str, Any]:
formatted_data = {}
for field, item in data.items():
formatted_data[stringcase.snakecase(field)] = item
return formatted_data
@logger.catch
async def _construct_query(
self, function: str, to_json: bool = True, **kwargs
) -> Union[Dict[str, Any], str]:
path = "query/"
async with self._session.get(
urlparse.urljoin(self._api_endpoint, path),
params={"function": function, **kwargs, **self._query_params},
) as response:
data = (await response.json()) if to_json else (await response.text())
if to_json:
data = self._format_fields(data)
return data
@logger.catch
async def get_securities(self, state: str = "active") -> List[Dict[str, str]]:
data = await self._construct_query("LISTING_STATUS", state=state, to_json=False)
data = pd.read_csv(StringIO(data))
securities = data.to_dict("records")
for index, security in enumerate(securities):
security = self._format_fields(security)
security["_type"] = "physical"
securities[index] = security
return securities
@logger.catch
async def get_security_overview(self, symbol: str) -> Dict[str, str]:
return await self._construct_query("OVERVIEW", symbol=symbol)
@logger.catch
async def get_historical_data(self, symbol: str) -> Dict[str, Any]:
return await self._construct_query(
"TIME_SERIES_DAILY_ADJUSTED", symbol=symbol, outputsize="full"
)
@logger.catch
async def get_last_price_data(self, symbol: str) -> Dict[str, Any]:
return await self._construct_query("GLOBAL_QUOTE", symbol=symbol)
@logger.catch
async def get_indicator_data(
self, symbol: str, indicator: str, **indicator_options
) -> Dict[str, Any]:
return await self._construct_query(
indicator, symbol=symbol, **indicator_options
)
เดตเดพเดธเตเดคเดตเดคเตเดคเดฟเตฝ, เด เดคเดฟเตฝ เดจเดฟเดจเตเดจเต เดเดฒเตเดฒเดพเด เดตเตเดฏเดเตเดคเดฎเดพเดฃเต:
-
AlphaVantage API เดตเดณเดฐเต เดฒเดณเดฟเดคเดฎเดพเดฏเตเด เดฎเดจเตเดนเดฐเดฎเดพเดฏเตเด เดฐเตเดชเดเตฝเดชเตเดชเดจ เดเตเดฏเตโเดคเดฟเดฐเดฟเดเตเดเตเดจเตเดจเต, เด เดคเดฟเดจเดพเตฝ เดเดฒเตเดฒเดพ เด เดญเตเดฏเตผเดคเตเดฅเดจเดเดณเตเด เด เดฐเตเดคเดฟเดฏเดฟเดฒเตเดเต เดจเดเดคเตเดคเดพเตป เดเดพเตป เดคเตเดฐเตเดฎเดพเดจเดฟเดเตเดเต
construct_query
เด เดตเดฟเดเต เดเดฐเต http เดเตเตพ เดเดฃเตเดเต. -
เดเดพเตป เดเดฒเตเดฒเดพ เดตเดฏเดฒเตเดเดณเตเด เดเตเดฃเตเดเตเดตเดฐเตเดจเตเดจเต
snake_case
เดธเตเดเดฐเตเดฏเดคเตเดคเดฟเดจเดพเดฏเดฟ. -
เดจเดจเตเดจเดพเดฏเดฟ, เดฎเดจเตเดนเดฐเดตเตเด เดตเดฟเดเตเดเดพเดจเดชเตเดฐเดฆเดตเตเดฎเดพเดฏ เดเตเดฐเตเดฏเตเดธเตเดฌเดพเดเตเดเต เดเดเตเดเตเดชเตเดเตเดเดฟเดจเตเดณเตเดณ logger.catch เด เดฒเดเตเดเดพเดฐเด.
PS config.yml-เดฒเตเดเตเดเต เดชเตเดฐเดพเดฆเตเดถเดฟเดเดฎเดพเดฏเดฟ เดเตฝเดซเดตเดพเดจเตเดฑเตเดเต เดเตเดเตเดเตบ เดเตเตผเดเตเดเดพเตป เดฎเดฑเดเตเดเดฐเตเดคเต, เด
เดฒเตเดฒเตเดเตเดเดฟเตฝ เดชเดฐเดฟเดธเตเดฅเดฟเดคเดฟ เดตเตเดฐเดฟเดฏเดฌเดฟเตพ เดเดฏเดฑเตเดฑเตเดฎเดคเดฟ เดเตเดฏเตเดฏเตเด HORTON_SERVICE_APIKEY
. เดเดเตเดเตพเดเตเดเต เดเดฐเต เดเตเดเตเดเตบ เดฒเดญเดฟเดเตเดเตเดจเตเดจเต
CRUD เดเตเดฒเดพเดธเต
เดธเตเดเตเดฏเตเดฐเดฟเดฑเตเดฑเดฟเดเดณเตเดเตเดเตเดฑเดฟเดเตเดเตเดณเตเดณ เดฎเตเดฑเตเดฑเดพ เดตเดฟเดตเดฐเดเตเดเตพ เดธเดเดญเดฐเดฟเดเตเดเตเดจเตเดจเดคเดฟเดจเต เดเดเตเดเตพเดเตเดเต เดเดฐเต เดธเตเดเตเดฏเตเดฐเดฟเดฑเตเดฑเตเดธเต เดถเตเดเดฐเด เดเดฃเตเดเดพเดฏเดฟเดฐเดฟเดเตเดเตเด.
เดเดจเตเดฑเต เด เดญเดฟเดชเตเดฐเดพเดฏเดคเตเดคเดฟเตฝ, เดเดตเดฟเดเต เดเดจเตเดจเตเด เดตเดฟเดถเดฆเตเดเดฐเดฟเดเตเดเตเดฃเตเด เดเดตเดถเตเดฏเดฎเดฟเดฒเตเดฒ, เด เดเดฟเดธเตเดฅเดพเดจ เดเตเดฒเดพเดธเต เดคเดจเตเดจเต เดตเดณเดฐเต เดฒเดณเดฟเดคเดฎเดพเดฃเต.
get_app()
เดเดฐเต เดเดชเตเดฒเดฟเดเตเดเตเดทเตป เดเดฌเตโเดเดเตโเดฑเตเดฑเต เดธเตเดทเตโเดเดฟเดเตเดเตเดจเตเดจเดคเดฟเดจเต เดเดฐเต เดซเดเดเตโเดทเตป เดเตเตผเดเตเดเดพเด
เดธเตเดชเตเดพเดฏเตเดฒเตผ
import faust
from horton.config import KAFKA_BROKERS
def get_app():
return faust.App("horton", broker=KAFKA_BROKERS)
เดเดชเตเดชเตเตพ เดเดเตเดเตพเดเตเดเต เดเดฑเตเดฑเดตเตเด เดฒเดณเดฟเดคเดฎเดพเดฏ เดเดชเตเดฒเดฟเดเตเดเตเดทเตป เดธเตเดทเตเดเดฟเดเตเดเตฝ เดฒเดญเดฟเดเตเดเตเด, เดเตเดฑเดเตเดเต เดเดดเดฟเดเตเดเต เดเดเตเดเตพ เด
เดคเต เดตเดฟเดเดธเดฟเดชเตเดชเดฟเดเตเดเตเด, เดเดจเตเดจเดฟเดฐเตเดจเตเดจเดพเดฒเตเด, เดจเดฟเดเตเดเดณเต เดเดพเดคเตเดคเดฟเดฐเดฟเดเตเดเดพเดคเดฟเดฐเดฟเดเตเดเดพเตป, เดเดตเดฟเดเต
เดชเตเดฐเดงเดพเดจ เดถเดฐเตเดฐเด
เดธเตเดเตเดฏเตเดฐเดฟเดฑเตเดฑเดฟเดเดณเตเดเต เดเดฐเต เดฒเดฟเดธเตเดฑเตเดฑเต เดถเตเดเดฐเดฟเดเตเดเตเดจเตเดจเดคเดฟเดจเตเด เดชเดฐเดฟเดชเดพเดฒเดฟเดเตเดเตเดจเตเดจเดคเดฟเดจเตเดฎเตเดณเตเดณ เดเดเดจเตเดฑเต
app = get_app()
collect_securities_topic = app.topic("collect_securities", internal=True)
@app.agent(collect_securities_topic)
async def collect_securities(stream: StreamT[None]) -> AsyncIterable[bool]:
pass
เด เดคเดฟเดจเดพเตฝ, เดเดฆเตเดฏเด เดจเดฎเตเดเตเดเต เดซเดพเดธเตเดฑเตเดฑเต เดเดชเตเดฒเดฟเดเตเดเตเดทเตป เดเดฌเตเดเดเตเดฑเตเดฑเต เดฒเดญเดฟเดเตเดเตเด - เดเดคเต เดตเดณเดฐเต เดฒเดณเดฟเดคเดฎเดพเดฃเต. เด เดเตเดคเตเดคเดคเดพเดฏเดฟ, เดเดเตเดเดณเตเดเต เดเดเดจเตเดฑเดฟเดจเดพเดฏเดฟ เดเดเตเดเตพ เดเดฐเต เดตเดฟเดทเดฏเด เดตเตเดฏเดเตเดคเดฎเดพเดฏเดฟ เดชเตเดฐเดเตเดฏเดพเดชเดฟเดเตเดเตเดจเตเดจเต... เดเดตเดฟเดเต เด เดคเต เดเดจเตเดคเดพเดฃเตเดจเตเดจเตเด เดเดจเตเดคเดฐเดฟเด เดชเดพเดฐเดพเดฎเตเดฑเตเดฑเตผ เดเดจเตเดคเดพเดฃเตเดจเตเดจเตเด เดเดคเต เดเดเตเดเดจเต เดตเตเดฏเดคเตเดฏเดธเตเดคเดฎเดพเดฏเดฟ เดเตเดฐเดฎเตเดเดฐเดฟเดเตเดเดพเดฎเตเดจเตเดจเตเด เดชเดฐเดพเดฎเตผเดถเดฟเดเตเดเตเดฃเตเดเดคเดพเดฃเต.
-
เดเดพเดซเตเดเดฏเดฟเดฒเต เดตเดฟเดทเดฏเดเตเดเตพ, เดเตเดคเตเดฏเดฎเดพเดฏ เดจเดฟเตผเดตเดเดจเด เด เดฑเดฟเดฏเดฃเดฎเตเดเตเดเดฟเตฝ, เดตเดพเดฏเดฟเดเตเดเตเดจเตเดจเดคเดพเดฃเต เดจเดฒเตเดฒเดคเต
เดเดซเต. เดชเตเดฐเดฎเดพเดฃเด , เด เดฒเตเดฒเตเดเตเดเดฟเตฝ เดจเดฟเดเตเดเตพเดเตเดเต เดตเดพเดฏเดฟเดเตเดเดพเดเดธเดเดเตเดฐเดนเด เดฑเดทเตเดฏเตป เดญเดพเดทเดฏเดฟเตฝ เดนเดฌเตเดฐเตเดฏเดฟเตฝ, เดเดฒเตเดฒเดพเด เดตเดณเดฐเต เดเตเดคเตเดฏเดฎเดพเดฏเดฟ เดชเตเดฐเดคเดฟเดซเดฒเดฟเดชเตเดชเดฟเดเตเดเตเดจเตเดจเต :) -
เดเดจเตเดคเดฐเดฟเด เดชเดฐเดพเดฎเตเดฑเตเดฑเตผ , เดซเตเดธเตเดฑเตเดฑเต เดกเตเดเตเดเดฟเตฝ เดจเดจเตเดจเดพเดฏเดฟ เดตเดฟเดตเดฐเดฟเดเตเดเดฟเดฐเดฟเดเตเดเตเดจเตเดจเดคเต, เดเตเดกเดฟเตฝ เดตเดฟเดทเดฏเด เดจเตเดฐเดฟเดเตเดเต เดเตเตบเดซเดฟเดเตผ เดเตเดฏเตเดฏเดพเตป เดเดเตเดเดณเต เด เดจเตเดตเดฆเดฟเดเตเดเตเดจเตเดจเต, เดคเตเตผเดเตเดเดฏเดพเดฏเตเด, เดเดคเดฟเดจเตผเดคเตเดฅเด เดซเดธเตเดฑเตเดฑเต เดกเตเดตเดฒเดชเตเดชเตผเดฎเดพเตผ เดจเตฝเดเตเดจเตเดจ เดชเดพเดฐเดพเดฎเตเดฑเตเดฑเดฑเตเดเตพ, เดเดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเดจเต: เดจเดฟเดฒเดจเดฟเตผเดคเตเดคเตฝ, เดจเดฟเดฒเดจเดฟเตผเดคเตเดคเตฝ เดจเดฏเด (เดธเตเดฅเดฟเดฐเดธเตเดฅเดฟเดคเดฟเดฏเดพเดฏเดฟ เดเดฒเตเดฒเดพเดคเดพเดเตเดเตเด, เดเดจเตเดจเดพเตฝ เดจเดฟเดเตเดเตพเดเตเดเต เดธเดเตเดเดฎเดพเดเตเดเดพเตป เดเดดเดฟเดฏเตเดเดเดคเตเดเตเดเดฎเตเดณเตเดณ ), เดเดฐเต เดตเดฟเดทเดฏเดคเตเดคเดฟเดจเตเด เดชเดพเตผเดเตเดเตเดทเดจเตเดเดณเตเดเต เดเดฃเตเดฃเด (เดชเดพเตผเดเตเดเตเดทเดจเตเดเตพ เดเตเดฏเตเดฏเดพเตป, เดเดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเดจเต, เดเตเดฑเดตเตเดเดเตเดณ เดชเตเดฐเดพเดงเดพเดจเตเดฏเด เด เดชเตเดเตเดทเดเตพ เดตเตเดเดคเตเดคเดฟเตฝ). -
เดชเตเดคเตเดตเต, เดเดเดจเตเดฑเดฟเดจเต เดเดเตเดณ เดฎเตเดฒเตเดฏเดเตเดเดณเตเดณเตเดณ เดเดฐเต เดจเดฟเดฏเดจเตเดคเตเดฐเดฟเดค เดตเดฟเดทเดฏเด เดธเตเดทเตเดเดฟเดเตเดเดพเตป เดเดดเดฟเดฏเตเด, เดเดจเตเดจเดฟเดฐเตเดจเตเดจเดพเดฒเตเด, เดเดฒเตเดฒเดพเด เดตเตเดฏเดเตเดคเดฎเดพเดฏเดฟ เดชเตเดฐเดเตเดฏเดพเดชเดฟเดเตเดเดพเตป เดเดพเตป เดเดเตเดฐเดนเดฟเดเตเดเตเดจเตเดจเต. เดเตเดเดพเดคเต, เดเดเดจเตเดฑเต เดชเดฐเดธเตเดฏเดคเตเดคเดฟเดฒเต เดตเดฟเดทเดฏเดคเตเดคเดฟเดจเตเดฑเต เดเดฟเดฒ เดชเดพเดฐเดพเดฎเตเดฑเตเดฑเดฑเตเดเตพ (เดเดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเดจเต, เดชเดพเตผเดเตเดเตเดทเดจเตเดเดณเตเดเต เดเดฃเตเดฃเด เด เดฒเตเดฒเตเดเตเดเดฟเตฝ เดจเดฟเดฒเดจเดฟเตผเดคเตเดคเตฝ เดจเดฏเด) เดเตเตบเดซเดฟเดเตผ เดเตเดฏเตเดฏเดพเตป เดเดดเดฟเดฏเดฟเดฒเตเดฒ.
เดตเดฟเดทเดฏเด เดธเตเดตเดฎเตเดงเดฏเดพ เดจเดฟเตผเดตเดเดฟเดเตเดเดพเดคเต เดเดคเต เดเดเตเดเดจเตเดฏเดพเดฏเดฟเดฐเดฟเดเตเดเตเดฎเตเดจเตเดจเต เดเดคเดพ:
app = get_app()
@app.agent()
async def collect_securities(stream: StreamT[None]) -> AsyncIterable[bool]:
pass
เดถเดฐเดฟ, เดเดชเตเดชเตเตพ เดเดเตเดเดณเตเดเต เดเดเดจเตเดฑเต เดเดจเตเดคเตเดเตเดฏเตเดฏเตเดฎเตเดจเตเดจเต เดตเดฟเดตเดฐเดฟเดเตเดเดพเด :)
app = get_app()
collect_securities_topic = app.topic("collect_securities", internal=True)
@app.agent(collect_securities_topic)
async def collect_securities(stream: StreamT[None]) -> AsyncIterable[bool]:
async with aiohttp.ClientSession() as session:
async for _ in stream:
logger.info("Start collect securities")
client = AlphaVantageClient(session, API_KEY)
securities = await client.get_securities()
for security in securities:
await SecurityCRUD.update_one(
{"symbol": security["symbol"], "exchange": security["exchange"]}, security, upsert=True
)
yield True
เด
เดคเดฟเดจเดพเตฝ, เดเดเดจเตเดฑเดฟเดจเตเดฑเต เดคเตเดเดเตเดเดคเตเดคเดฟเตฝ, เดเดเตเดเดณเตเดเต เดเตเดฒเดฏเดจเตเดฑเต เดฎเตเดเตเดจเดฏเตเดณเตเดณ เด
เดญเตเดฏเตผเดคเตเดฅเดจเดเตพเดเตเดเดพเดฏเดฟ เดเดเตเดเตพ เดเดฐเต aiohttp เดธเตเดทเตป เดคเตเดฑเดเตเดเตเดจเตเดจเต. เด
เดเตเดเดจเต, เดเดฐเต เดคเตเดดเดฟเดฒเดพเดณเดฟ เดเดฐเดเดญเดฟเดเตเดเตเดฎเตเดชเตเตพ, เดเดเตเดเดณเตเดเต เดเดเดจเตเดฑเต เดธเดฎเดพเดฐเดเดญเดฟเดเตเดเตเดฎเตเดชเตเตพ, เดเดฐเต เดธเตเดทเตป เดเดเดจเดเดฟ เดคเตเดฑเดเตเดเตเด - เดเดจเตเดจเต, เดฎเตเดดเตเดตเตป เดธเดฎเดฏเดคเตเดคเตเด เดคเตเดดเดฟเดฒเดพเดณเดฟ เดชเตเดฐเดตเตผเดคเตเดคเดฟเดเตเดเตเดจเตเดจเต (เด
เดฒเตเดฒเตเดเตเดเดฟเตฝ เดจเดฟเดฐเดตเดงเดฟ, เดจเดฟเดเตเดเตพ เดชเดพเดฐเดพเดฎเตเดฑเตเดฑเตผ เดฎเดพเดฑเตเดฑเตเดเดฏเดพเดฃเตเดเตเดเดฟเตฝ
เด
เดเตเดคเตเดคเดคเดพเดฏเดฟ, เดเดเตเดเตพ เดธเตเดเตเดฐเตเด เดชเดฟเดจเตเดคเตเดเดฐเตเดจเตเดจเต (เดเดเตเดเตพ เดธเดจเตเดฆเตเดถเด เดจเตฝเดเตเดจเตเดจเต _
, เดเดเตเดเตพ, เด เดเดเดจเตเดฑเดฟเตฝ, เดเดเตเดเดณเตเดเต เดตเดฟเดทเดฏเดคเตเดคเดฟเตฝ เดจเดฟเดจเตเดจเตเดณเตเดณ เดธเดจเตเดฆเตเดถเดเตเดเดณเตเดเต) เดเดณเตเดณเดเดเตเดเดคเตเดคเตเดเตเดเตเดฑเดฟเดเตเดเต เดถเตเดฐเดฆเตเดงเดฟเดเตเดเดพเดคเตเดคเดคเดฟเดจเดพเตฝ, เด
เดต เดจเดฟเดฒเดตเดฟเดฒเต เดเดซเตโเดธเตเดฑเตเดฑเดฟเตฝ เดจเดฟเดฒเดตเดฟเดฒเตเดฃเตเดเตเดเตเดเดฟเตฝ, เด
เดฒเตเดฒเดพเดคเตเดคเดชเดเตเดทเด เดเดเตเดเดณเตเดเต เดธเตเดเตเดเดฟเตพ เด
เดตเดฐเตเดเต เดตเดฐเดตเดฟเดจเดพเดฏเดฟ เดเดพเดคเตเดคเดฟเดฐเดฟเดเตเดเตเด. เดถเดฐเดฟ, เดเดเตเดเดณเตเดเต เดฒเตเดชเตเดชเดฟเดจเตเดณเตเดณเดฟเตฝ, เดเดเตเดเตพ เดธเดจเตเดฆเตเดถเดคเตเดคเดฟเดจเตเดฑเต เดฐเดธเตเดคเต เดฒเตเดเต เดเตเดฏเตเดฏเตเดจเตเดจเต, เดธเดเตเดตเดฎเดพเดฏ (get_securities เดฑเดฟเดเตเดเตเดฃเตเดเตพ เดธเตเดฅเดฟเดฐเดธเตเดฅเดฟเดคเดฟเดฏเดพเดฏเดฟ เดฎเดพเดคเตเดฐเดฎเต เดธเดเตเดตเดฎเดพเดเต, เดเตเดฒเดฏเดจเตเดฑเต เดเตเดกเต เดเดพเดฃเตเด) เดธเตเดเตเดฏเตเดฐเดฟเดฑเตเดฑเดฟเดเดณเตเดเต เดเดฐเต เดฒเดฟเดธเตเดฑเตเดฑเต เดจเตเดเตเดเดฏเตเด เดกเดพเดฑเตเดฑเดพเดฌเตเดธเดฟเตฝ เดธเดเดฐเดเตเดทเดฟเดเตเดเตเดเดฏเตเด เดเตเดฏเตเดฏเตเดจเตเดจเต, เด
เดคเต เดเดฟเดเตเดเดฑเตเดณเตเดณ เดธเตเดฐเดเตเดทเดฏเตเดฃเตเดเต เดเดจเตเดจเต เดชเดฐเดฟเดถเตเดงเดฟเดเตเดเตเดเดฏเตเด เดกเดพเดฑเตเดฑเดพเดฌเตเดธเดฟเตฝ เดเดเตเดธเตเดเตเดเตเดเต , เดเดฃเตเดเตเดเตเดเดฟเตฝ, เด
เดคเต (เดชเตเดชเตเดชเตผ) เดฒเดณเดฟเดคเดฎเดพเดฏเดฟ เด
เดชเตเดกเตเดฑเตเดฑเต เดเตเดฏเตเดฏเตเด.
เดจเดฎเตเดเตเดเต เดจเดฎเตเดฎเตเดเต เดธเตเดทเตเดเดฟ เดเดฐเดเดญเดฟเดเตเดเดพเด!
> docker-compose up -d
... ะะฐะฟััะบ ะบะพะฝัะตะนะฝะตัะพะฒ ...
> faust -A horton.agents worker --without-web -l info
PS เดธเดตเดฟเดถเตเดทเดคเดเตพ
เดเดเตเดเดณเตเดเต เดฒเตเดเตเดเต เดเดฎเดพเตปเดกเดฟเตฝ, เดเตปเดซเต เดฒเตเดเต เดเดเตเดเตโเดชเตเดเตเดเต เดฒเตเดตเตฝ เดเดชเดฏเตเดเดฟเดเตเดเต เดเดชเตเดฒเดฟเดเตเดเตเดทเตป เดเดฌเตโเดเดเตเดฑเตเดฑเต เดเดตเดฟเดเตเดฏเดพเดฃเต เดคเดฟเดฐเดฏเตเดฃเตเดเดคเตเดจเตเดจเตเด เด เดคเต เดเดจเตเดคเต เดเตเดฏเตเดฏเดฃเด (เดเดฐเต เดคเตเดดเดฟเดฒเดพเดณเดฟเดฏเต เดธเดฎเดพเดฐเดเดญเดฟเดเตเดเดฃเดฎเตเดจเตเดจเตเด) เดเดเตเดเตพ เดซเดพเดธเตเดฑเตเดฑเดฟเดจเตเดเต เดชเดฑเดเตเดเต. เดเดเตเดเตพเดเตเดเต เดเดจเดฟเดชเตเดชเดฑเดฏเตเดจเตเดจ เดเดเตเดเตเดชเตเดเตเดเต เดฒเดญเดฟเดเตเดเตเดจเตเดจเต:
เดธเตเดชเตเดพเดฏเตเดฒเตผ
โฦaยตSโ v1.10.4โฌโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ id โ horton โ
โ transport โ [URL('kafka://localhost:9092')] โ
โ store โ memory: โ
โ log โ -stderr- (info) โ
โ pid โ 1271262 โ
โ hostname โ host-name โ
โ platform โ CPython 3.8.2 (Linux x86_64) โ
โ drivers โ โ
โ transport โ aiokafka=1.1.6 โ
โ web โ aiohttp=3.6.2 โ
โ datadir โ /path/to/project/horton-data โ
โ appdir โ /path/to/project/horton-data/v1 โ
โโโโโโโโโโโโโโโดโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
... ะปะพะณะธ, ะปะพะณะธ, ะปะพะณะธ ...
โTopic Partition Setโโโโโโโโโโฌโโโโโโโโโโโโโ
โ topic โ partitions โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโค
โ collect_securities โ {0-7} โ
โ horton-__assignor-__leader โ {0} โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโดโโโโโโโโโโโโโ
เดเดคเดฟเดจเต เดเตเดตเดจเตเดฃเตเดเต!!!
เดชเดพเตผเดเตเดเตเดทเตป เดธเตเดฑเตเดฑเต เดจเตเดเตเดเดพเด. เดจเดฎเตเดเตเดเต เดเดพเดฃเดพเดจเดพเดเตเดจเตเดจเดคเตเดชเตเดฒเต, เดเตเดกเดฟเตฝ เดเดเตเดเตพ เดจเดฟเดฏเตเดเตเดคเดฎเดพเดเตเดเดฟเดฏ เดชเตเดฐเต, เดชเดพเตผเดเตเดเตเดทเดจเตเดเดณเตเดเต เดกเดฟเดซเตเตพเดเตเดเต เดจเดฎเตเดชเตผ (8, เดเดเตเดคเตเดคเดคเต
เดถเดฐเดฟ, เดเดชเตเดชเตเตพ เดจเดฎเตเดเตเดเต เดฎเดฑเตเดฑเตเดฐเต เดเตเตผเดฎเดฟเดจเตฝ เดตเดฟเตปเดกเตเดฏเดฟเดฒเตเดเตเดเต เดชเตเดฏเดฟ เดเดเตเดเดณเตเดเต เดตเดฟเดทเดฏเดคเตเดคเดฟเดฒเตเดเตเดเต เดเดฐเต เดถเตเดจเตเดฏเดฎเดพเดฏ เดธเดจเตเดฆเตเดถเด เด เดฏเดฏเตเดเตเดเดพเด:
> faust -A horton.agents send @collect_securities
{"topic": "collect_securities", "partition": 6, "topic_partition": ["collect_securities", 6], "offset": 0, "timestamp": ..., "timestamp_type": 0}
เดชเดฟเดเดธเต เดเดชเดฏเตเดเดฟเดเตเดเตเดจเตเดจเดคเต @
"collect_securities" เดเดจเตเดจ เดชเตเดฐเดฟเดฒเตเดณเตเดณ เดเดฐเต เดตเดฟเดทเดฏเดคเตเดคเดฟเดฒเตเดเตเดเดพเดฃเต เดเดเตเดเตพ เดเดฐเต เดธเดจเตเดฆเตเดถเด เด
เดฏเดฏเตเดเตเดเตเดจเตเดจเดคเตเดจเตเดจเต เดเดเตเดเตพ เดเดพเดฃเดฟเดเตเดเตเดจเตเดจเต.
เด เดธเดพเดนเดเดฐเตเดฏเดคเตเดคเดฟเตฝ, เดธเดจเตเดฆเตเดถเด เดชเดพเตผเดเตเดเตเดทเตป 6-เดฒเตเดเตเดเต เดชเตเดฏเดฟ - kafdrop on-เดฒเตเดเตเดเต เดชเตเดฏเดฟ เดจเดฟเดเตเดเตพเดเตเดเต เดเดคเต เดชเดฐเดฟเดถเตเดงเดฟเดเตเดเดพเด localhost:9000
เดเดเตเดเดณเตเดเต เดคเตเดดเดฟเดฒเดพเดณเดฟเดฏเตเดฎเดพเดฏเดฟ เดเตเตผเดฎเดฟเดจเตฝ เดตเดฟเตปเดกเตเดฏเดฟเดฒเตเดเตเดเต เดชเตเดเตเดฎเตเดชเตเตพ, เดฒเตเดเตเดฐเต เดเดชเดฏเตเดเดฟเดเตเดเต เด เดฏเดเตเด เดธเดจเตเดคเตเดทเดเดฐเดฎเดพเดฏ เดธเดจเตเดฆเตเดถเด เดเดเตเดเตพ เดเดพเดฃเตเด:
2020-09-23 00:26:37.304 | INFO | horton.agents:collect_securities:40 - Start collect securities
เดจเดฎเตเดเตเดเต เดฎเตเดเดเต (Robo3T เด เดฒเตเดฒเตเดเตเดเดฟเตฝ Studio3T เดเดชเดฏเตเดเดฟเดเตเดเต) เดชเดฐเดฟเดถเตเดงเดฟเดเตเดเดพเดจเตเด เดธเตเดเตเดฏเตเดฐเดฟเดฑเตเดฑเดฟเดเตพ เดกเดพเดฑเตเดฑเดพเดฌเตเดธเดฟเตฝ เดเดฃเตเดเตเดจเตเดจเต เดเดพเดฃเดพเดจเตเด เดเดดเดฟเดฏเตเด:
เดเดพเตป เดเดฐเต เดถเดคเดเตเดเตเดถเตเดตเดฐเดจเดฒเตเดฒ, เด เดคเดฟเดจเดพเตฝ เดเดเตเดเตพ เดเดฆเตเดฏเด เดเดพเดฃเดพเดจเตเดณเตเดณ เดเดชเตเดทเดจเดฟเตฝ เดธเดเดคเตเดชเตเดคเดฐเดพเดฃเต.
เดธเดจเตเดคเตเดทเดตเตเด เดธเดจเตเดคเตเดทเดตเตเด - เดเดฆเตเดฏ เดเดเดจเตเดฑเต เดคเดฏเตเดฏเดพเดฑเดพเดฃเต :)
เดเดเดจเตเดฑเต เดคเดฏเตเดฏเดพเดฑเดพเดฃเต, เดชเตเดคเดฟเดฏ เดเดเดจเตเดฑเดฟเดจเต เดฆเตเตผเดเดพเดฏเตเดธเตเดธเต!
เด เดคเต, เดฎเดพเดจเตเดฏเดฐเต, เด เดฒเตเดเดจเด เดคเดฏเตเดฏเดพเดฑเดพเดเตเดเดฟเดฏ เดชเดพเดคเดฏเตเดเต 1/3 เดฎเดพเดคเตเดฐเดฎเต เดเดเตเดเตพ เดเดตเตผ เดเตเดฏเตเดคเดฟเดเตเดเตเดณเตเดณเต, เดชเดเตเดทเต เดจเดฟเดฐเตเดคเตเดธเดพเดนเดชเตเดชเตเดเดฐเตเดคเต, เดเดพเดฐเดฃเด เดเดชเตเดชเตเตพ เดเดคเต เดเดณเตเดชเตเดชเดฎเดพเดเตเด.
เด เดคเดฟเดจเดพเตฝ เดเดชเตเดชเตเตพ เดจเดฎเตเดเตเดเต เดฎเตเดฑเตเดฑเดพ เดตเดฟเดตเดฐเดเตเดเตพ เดถเตเดเดฐเดฟเดเตเดเตเดเดฏเตเด เดเดฐเต เดถเตเดเดฐเดฃ เดชเตเดฐเดฎเดพเดฃเดคเตเดคเดฟเตฝ เดเดเตเดเดฏเตเด เดเตเดฏเตเดฏเตเดจเตเดจ เดเดฐเต เดเดเดจเตเดฑเต เดเดตเดถเตเดฏเดฎเดพเดฃเต:
collect_security_overview_topic = app.topic("collect_security_overview", internal=True)
@app.agent(collect_security_overview_topic)
async def collect_security_overview(
stream: StreamT[?],
) -> AsyncIterable[bool]:
async with aiohttp.ClientSession() as session:
async for event in stream:
...
เด เดเดเดจเตเดฑเต เดเดฐเต เดจเดฟเตผเดฆเตเดฆเดฟเดทเตโเด เดธเตเดฐเดเตเดทเดฏเตเดเตเดเตเดฑเดฟเดเตเดเตเดณเตเดณ เดตเดฟเดตเดฐเดเตเดเตพ เดชเตเดฐเตเดธเดธเตเดธเต เดเตเดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเดพเตฝ, เดธเดจเตเดฆเตเดถเดคเตเดคเดฟเตฝ เด เดธเตเดฐเดเตเดทเดฏเตเดเต เดเดฟเดเตเดเตผ (เดเดฟเดนเตเดจเด) เดเดเตเดเตพ เดธเตเดเดฟเดชเตเดชเดฟเดเตเดเตเดฃเตเดเดคเตเดฃเตเดเต. เด เดเดตเดถเตเดฏเดคเตเดคเดฟเดจเดพเดฏเดฟ เดซเดพเดธเตเดฑเตเดฑเดฟเตฝ เดเดฃเตเดเต
เด เดธเดพเดนเดเดฐเตเดฏเดคเตเดคเดฟเตฝ, เดจเดฎเตเดเตเดเต เดชเตเดเดพเด
import faust
class CollectSecurityOverview(faust.Record):
symbol: str
exchange: str
เดจเดฟเดเตเดเตพ เดเดนเดฟเดเตเดเดคเตเดชเตเดฒเต, เดธเดจเตเดฆเตเดถ เดธเตเดเตเดฎเดฏเต เดตเดฟเดตเดฐเดฟเดเตเดเดพเตป เดซเตเดธเตเดฑเตเดฑเต เดชเตเดคเตเดคเตบ เดคเดฐเด เดตเตเดฏเดพเดเตเดฏเดพเดจเด เดเดชเดฏเตเดเดฟเดเตเดเตเดจเตเดจเต, เด
เดคเดฟเดจเดพเดฒเดพเดฃเต เดฒเตเดฌเตเดฐเดฑเดฟ เดชเดฟเดจเตเดคเตเดฃเดฏเตเดเตเดเตเดจเตเดจ เดเดฑเตเดฑเดตเตเด เดเตเดฑเดเตเด เดชเดคเดฟเดชเตเดชเต
เดจเดฎเตเดเตเดเต เดเดเดจเตเดฑเดฟเดฒเตเดเตเดเต เดฎเดเดเตเดเดพเด, เดคเดฐเดเตเดเตพ เดธเดเตเดเดฎเดพเดเตเดเดฟ เด เดคเต เดเตเตผเดเตเดเตเด:
collect_security_overview_topic = app.topic(
"collect_security_overview", internal=True, value_type=CollectSecurityOverview
)
@app.agent(collect_security_overview_topic)
async def collect_security_overview(
stream: StreamT[CollectSecurityOverview],
) -> AsyncIterable[bool]:
async with aiohttp.ClientSession() as session:
async for event in stream:
logger.info(
"Start collect security [{symbol}] overview", symbol=event.symbol
)
client = AlphaVantageClient(session, API_KEY)
security_overview = await client.get_security_overview(event.symbol)
await SecurityCRUD.update_one({"symbol": event.symbol, "exchange": event.exchange}, security_overview)
yield True
เดจเดฟเดเตเดเตพเดเตเดเต เดเดพเดฃเดพเดจเดพเดเตเดจเตเดจเดคเตเดชเตเดฒเต, เดเดเตเดเตพ เดเดฐเต เดธเตเดเตเดฎเดฟเดจเตเดชเตเดชเด เดเดฐเต เดชเตเดคเดฟเดฏ เดชเดพเดฐเดพเดฎเตเดฑเตเดฑเตผ เดตเดฟเดทเดฏเด เดธเดฎเดพเดฐเดเดญเดฟเดเตเดเตเดจเตเดจ เดฐเตเดคเดฟเดฏเดฟเดฒเตเดเตเดเต เดเตเดฎเดพเดฑเตเดจเตเดจเต - value_type. เดเตเดเดพเดคเต, เดเดฒเตเดฒเดพเด เดเดฐเต เดธเตเดเตเด เดชเดฟเดจเตเดคเตเดเดฐเตเดจเตเดจเต, เด เดคเดฟเดจเดพเตฝ เดฎเดฑเตเดฑเตเดจเตเดคเดฟเดจเตเดเตเดเตเดฑเดฟเดเตเดเตเด เดเดฟเดจเตเดคเดฟเดเตเดเตเดจเตเดจเดคเดฟเตฝ เดเดพเตป เดเดฐเต เด เตผเดคเตเดฅเดตเตเด เดเดพเดฃเตเดจเตเดจเดฟเดฒเตเดฒ.
เดฎเตเดฑเตเดฑเดพ เดเตปเดซเตผเดฎเตเดทเตป เดเดณเดเตเดทเตป เดเดเดจเตเดฑเดฟเดฒเตเดเตเดเต เดเดณเดเตโเดฑเตเดฑเต_เดธเตเดเตเดฏเตเดฐเดฟเดฑเตเดฑเดฟเดฑเตเดฑเตเดเดณเดฟเดฒเตเดเตเดเต เดเดฐเต เดเตเตพ เดเตเตผเดเตเดเตเด เดเดจเตเดจเดคเดพเดฃเต เด เดตเดธเดพเดจ เดเดเตเดเต:
....
for security in securities:
await SecurityCRUD.update_one({
"symbol": security["symbol"],
"exchange": security["exchange"]
},
security,
upsert = True,
)
await collect_security_overview.cast(
CollectSecurityOverview(symbol = security["symbol"], exchange = security["exchange"])
)
....
เดธเดจเตเดฆเตเดถเดคเตเดคเดฟเดจเดพเดฏเดฟ เดเดเตเดเตพ เดฎเตเดฎเตเดชเต เดชเตเดฐเดเตเดฏเดพเดชเดฟเดเตเด เดธเตเดเตเด เดเดชเดฏเตเดเดฟเดเตเดเตเดจเตเดจเต. เด เดธเดพเดนเดเดฐเตเดฏเดคเตเดคเดฟเตฝ, เดเดเดจเตเดฑเดฟเตฝ เดจเดฟเดจเตเดจเตเดณเตเดณ เดซเดฒเดคเตเดคเดฟเดจเดพเดฏเดฟ เดเดพเดคเตเดคเดฟเดฐเดฟเดเตเดเตเดฃเตเดเดคเดฟเดฒเตเดฒ เดเดจเตเดจเดคเดฟเดจเดพเตฝ เดเดพเตป .cast เดฐเตเดคเดฟ เดเดชเดฏเตเดเดฟเดเตเดเต, เดชเดเตเดทเต เด
เดคเต เดเดเตเดคเตเดคเตเดชเดฑเดฏเตเดฃเตเดเดคเดพเดฃเต.
-
เดเดพเดธเตเดฑเตเดฑเต - เดเดฐเต เดซเดฒเด เดชเตเดฐเดคเตเดเตเดทเดฟเดเตเดเดพเดคเตเดคเดคเดฟเดจเดพเตฝ เดคเดเดฏเดฟเดฒเตเดฒ. เดจเดฟเดเตเดเตพเดเตเดเต เดซเดฒเด เดฎเดฑเตเดฑเตเดฐเต เดตเดฟเดทเดฏเดคเตเดคเดฟเดฒเตเดเตเดเต เดธเดจเตเดฆเตเดถเดฎเดพเดฏเดฟ เด เดฏเดฏเตเดเตเดเดพเตป เดเดดเดฟเดฏเดฟเดฒเตเดฒ.
-
เด เดฏเดฏเตเดเตเดเตเด - เดคเดเดฏเดฟเดฒเตเดฒ, เดเดพเดฐเดฃเด เด เดคเต เดเดฐเต เดซเดฒเด เดชเตเดฐเดคเตเดเตเดทเดฟเดเตเดเตเดจเตเดจเดฟเดฒเตเดฒ. เดซเดฒเด เดชเตเดเตเดจเตเดจ เดตเดฟเดทเดฏเดคเตเดคเดฟเตฝ เดจเดฟเดเตเดเตพเดเตเดเต เดเดฐเต เดเดเดจเตเดฑเดฟเดจเต เดตเตเดฏเดเตเดคเดฎเดพเดเตเดเดพเตป เดเดดเดฟเดฏเตเด.
-
เดเตเดฆเดฟเดเตเดเตเด - เดเดฐเต เดซเดฒเดคเตเดคเดฟเดจเดพเดฏเดฟ เดเดพเดคเตเดคเดฟเดฐเดฟเดเตเดเตเดจเตเดจเต. เดซเดฒเด เดชเตเดเตเดจเตเดจ เดตเดฟเดทเดฏเดคเตเดคเดฟเตฝ เดจเดฟเดเตเดเตพเดเตเดเต เดเดฐเต เดเดเดจเตเดฑเดฟเดจเต เดตเตเดฏเดเตเดคเดฎเดพเดเตเดเดพเตป เดเดดเดฟเดฏเตเด.
เด เดคเดฟเดจเดพเตฝ, เดเดจเตเดจเดคเตเดคเต เดเดเดจเตเดฑเตเดฎเดพเดฐเตเดฎเดพเดฏเดฟ เด เดคเตเดฐเดฎเดพเดคเตเดฐเด!
เดธเตเดตเดชเตเดจ เดเตเด
เด เดญเดพเดเดคเตเดคเต เดเดดเตเดคเดพเดฎเตเดจเตเดจเต เดเดพเตป เดตเดพเดเตเดฆเดพเดจเด เดเตเดฏเตเดค เด เดตเดธเดพเดจ เดเดพเดฐเตเดฏเด เดเดฎเดพเตปเดกเตเดเตพ เดเดฃเต. เดจเตเดฐเดคเตเดคเต เดธเตเดเดฟเดชเตเดชเดฟเดเตเดเดคเตเดชเตเดฒเต, เดซเดพเดธเตเดฑเตเดฑเดฟเดฒเต เดเดฎเดพเตปเดกเตเดเตพ เดเตเดฒเดฟเดเตเดเดฟเดจเต เดเตเดฑเตเดฑเตเดฎเตเดณเตเดณ เดเดฐเต เดฑเดพเดชเตเดชเดฑเดพเดฃเต. เดตเดพเดธเตเดคเดตเดคเตเดคเดฟเตฝ, -A เดเต เดตเตเดฏเดเตเดคเดฎเดพเดเตเดเตเดฎเตเดชเตเตพ, เด เดคเดฟเดจเตเดฑเต เดเดจเตเดฑเตผเดซเตเดธเดฟเดฒเตเดเตเดเต faust เดจเดฎเตเดฎเตเดเต เดเดทเตโเดเดพเดจเตเดธเตเดค เดเดฎเดพเตปเดกเต เด เดฑเตเดฑเดพเดเตเดเตเดเตเดฏเตเดฏเตเดจเตเดจเต
เดชเตเดฐเดเตเดฏเดพเดชเดฟเดเตเด เดเดเดจเตเดฑเตเดฎเดพเตผเดเตเดเต เดถเตเดทเด
@app.command()
async def start_collect_securities():
"""Collect securities and overview."""
await collect_securities.cast()
เด เดคเดฟเดจเดพเตฝ, เดเดเตเดเตพ เดเดฎเดพเตปเดกเตเดเดณเตเดเต เดฒเดฟเดธเตเดฑเตเดฑเต เดตเดฟเดณเดฟเดเตเดเตเดเดฏเดพเดฃเตเดเตเดเดฟเตฝ, เดจเดฎเตเดฎเตเดเต เดชเตเดคเดฟเดฏ เดเดฎเดพเตปเดกเต เด เดคเดฟเตฝ เดเดฃเตเดเดพเดเตเด:
> faust -A horton.agents --help
....
Commands:
agents List agents.
clean-versions Delete old version directories.
completion Output shell completion to be evaluated by the...
livecheck Manage LiveCheck instances.
model Show model detail.
models List all available models as a tabulated list.
reset Delete local table state.
send Send message to agent/topic.
start-collect-securities Collect securities and overview.
tables List available tables.
worker Start worker instance for given app.
เดฎเดฑเตเดฑเดพเดฐเตเดฏเตเด เดชเตเดฒเต เดจเดฎเตเดเตเดเต เดเดคเต เดเดชเดฏเตเดเดฟเดเตเดเดพเตป เดเดดเดฟเดฏเตเด, เด เดคเดฟเดจเดพเตฝ เดจเดฎเตเดเตเดเต เดซเดพเดธเตเดฑเตเดฑเต เดตเตผเดเตเดเตผ เดชเตเดจเดฐเดพเดฐเดเดญเดฟเดเตเดเต เดธเตเดเตเดฏเตเดฐเดฟเดฑเตเดฑเดฟเดเดณเตเดเต เดเดฐเต เดชเตเตผเดฃเตเดฃ เดถเตเดเดฐเด เดเดฐเดเดญเดฟเดเตเดเดพเด:
> faust -A horton.agents start-collect-securities
เด เดเตเดคเตเดคเดคเดพเดฏเดฟ เดเดจเตเดคเต เดธเดเดญเดตเดฟเดเตเดเตเด?
เด เดเตเดคเตเดค เดญเดพเดเดคเตเดคเต, เดถเตเดทเดฟเดเตเดเตเดจเตเดจ เดเดเดจเตเดฑเตเดฎเดพเดฐเต เดเดฆเดพเดนเดฐเดฃเดฎเดพเดฏเดฟ เดเดชเดฏเตเดเดฟเดเตเดเต, เดตเตผเดทเดคเตเดคเตเดเตเดเตเดณเตเดณ เดเตเดฐเตเดกเดฟเดเดเดฟเดจเตเดฑเต เด เดตเดธเดพเดจ เดตเดฟเดฒเดฏเดฟเดฒเตเด เดเดเดจเตเดฑเตเดฎเดพเดฐเตเดเต เดเตเดฐเตเตบ เดฒเตเดเตเดเดฟเดฒเตเด เด เดคเดฟเดฐเตเดเดเดจเตเดจเดคเดฟเดจเดพเดฏเดฟ เดคเดฟเดฐเดฏเตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เดธเดฟเดเตเดเต เดฎเตเดเตเดเดพเดจเดฟเดธเด เดเดเตเดเตพ เดชเดฐเดฟเดเดฃเดฟเดเตเดเตเด.
เดเดจเตเดจเดคเตเดคเตเดเตเดเต เด เดคเตเดฐเดฎเดพเดคเตเดฐเด! เดตเดพเดฏเดฟเดเตเดเดคเดฟเดจเต เดจเดจเตเดฆเดฟ :)
PS เด
เดตเดธเดพเดจ เดญเดพเดเดคเตเดคเดฟเดจเต เดเตเดดเดฟเตฝ, เดซเตเดธเตเดฑเตเดฑเตเด เดธเดเดเดฎเดตเตเด เดเดฏ เดเดพเดซเตเดเดฏเตเดเตเดเตเดฑเดฟเดเตเดเต เดเดจเตเดจเตเดเต เดเตเดฆเดฟเดเตเดเต (
เด เดตเดฒเดเดฌเด: www.habr.com