แ แแแแ แแแแแแแแ แแกแ แชแฎแแแ แแแ?
แแ แช แแกแ แแแแ แฎแแแก แฌแแ แแแแแฌแแ แแฃแจแแแแ แฃแแฆแ แแกแแ แแแขแแแ แแฃแแ แแ แแแฅแขแแก แคแแแแ, แ แแแแแจแแช แกแแญแแ แ แแงแ แแแแ แ แแแแแแแแแ แคแแแฃแ แ แแแแแแแแแก แ แแแฃแแแ แฃแแ แจแแกแ แฃแแแแแก แแ แแแแแแแแ แ แแฃแแ แแแแแแแแแแแ แแ แแแกแแแ แแฎแแ แแก แกแแ แแแกแแแแก แแแแฎแแแแแ. แแ แแแฅแขแ แแกแแแฅแ แแแฃแแแ แแ แกแแแแ แแ แแแแแแแแ, แแแก แฅแแแแ แแแแชแแแแแแก แแแจแแแแแก แแแ แขแแแ แแแฅแแแแแแ: แแแ แงแฃแแ, แ แแแแแแช แแแแฌแแแแก แแแแแแแแ แ แแ แแก แแ แแฌแแ แแแแแก แแแ แฃแขแแแแก แฏแแฃแคแแแก แจแแแ แแแแก แกแแจแฃแแแแแแ - แแก แแแแแแแ แแแกแแฆแแแ แแฆแแแฉแแแ แแแแแ, แกแแแแ แแ แแงแ แแแแแแ แแ แแกแแแแ แแกแแแ แแแ แฃแขแแแ. แแฃแแชแ, แ แแชแ แแแแแ แ แแแแแแแแแ แแ แแแแกแก แแแแแแญแแ แแ, แแแแแฌแแ แคแแฅแ แ แแ แแแแ แแแ, แ แแแแแแแแ แแฃแจแแแแแ แแ แ.แจ. แฉแแแฃแแแแ แแแ แแแแแแแแแก แ แแแแก แแแฌแงแแแแแ.
แฏแแ แแแแแแฌแงแแแขแ แแแแแแแชแแแ แแแแฎแฃแ แ, แ แแแแแกแแช แแแ แ แแแงแแแแแแ. แแ แแแฅแขแแก แแกแแแฅแ แแแฃแแ แฎแแกแแแแแก แแแแ แฉแแแฃแฆแ แแแแแ แแแแฎแแแก แแ แแแแฎแ
แแแแก แแแขแงแแ, แแ แแแฅแขแ แซแแแแแ แกแแแแขแแ แแกแแ แแ แกแแแแแแ แฌแแ แแแขแแแแ แแฃแจแแแแก แฉแแแแ แแฃแแแแก แกแฎแแ แแแแแแแชแแแแจแ แแ แแแแแ แแแขแแ แ แแแแแแก, แ แแ แแกแแแฅแ แแแฃแแ แแฃแแแก แแแแแงแแแแแแ แจแแซแแ แแแกแ แฌแแ แแแแแแจแ แแแขแแแ. แแแแ แแ, แกแแแฌแฃแฎแแ แแ, แแก แแแแแแแแแ แแ แแแแแฌแแแ, แ แแแแ แช แแฆแแแฉแแแ
แแ แแฎแ แแ แแแแแฌแงแ แซแแแแ แแแขแแ แแแขแแแแแ แแ แแแแแ! แแแแฎแฃแ แแก แจแแแฅแแแแแแแ, แแแแแ แแขแฃแแแ, แ แแแแ แช แแ แแแกแแแก
แแกแแแ, แจแแแแซแแแแ แแแฎแแ
แฒ แแก แแแแแแแแ?
แแกแ แ แแ, แกแขแแขแแแแแก แแแแแ แกแแ แแแจแ แแ แแแฉแแแแแแ, แแฃ แ แแแแ แฃแแแ แจแแแแ แแแแ แแแแแชแแแแแ แคแแแฃแ แ แแแแชแแแแแแแแ แคแแฃแกแขแแก แแแแแงแแแแแแ. แฉแแแแ แแแแแแแแแก แแ แแแฅแขแแก แฌแงแแ แ แแฅแแแแ, แ แแแแ แช แกแแฎแแแแแแ แฉแแแก,
P.S. แแฃ แแแแกแฏแแแแแ แแ แแแแแแ, แ แแแแแแแช แแแแฌแแ แ แแแแแชแ แแแแแขแแ แแแแแก แจแแกแแฎแแ, แแคแแฅแ แแ, แ แแ แแแแ แกแขแแขแแแก แแแแแก แแแแแฎแแแแ แแแแแช แแกแ แแแแแแงแฃแ แแแ:
แแ แแแฅแขแแก แแแแฎแแแแแแ
แแแแก แแแแ, แ แแ แแ แฃแแแ แแแแแแ แแ, แแแแแ แจแแแแแแแแแ แแชแแ แ แฉแแแแแแแแแแ แแแแกแ, แแฃ แ แ แฃแแแ แแแแแแแแก แกแแ แแแกแแ:
- แแขแแแ แแแ แคแแกแแแแ แฅแแฆแแแแแแ แแ แแแแ แแแแแฎแแแแ (แแแ แจแแ แแก แแแแแแ แแ แแแ แแแ, แแแแแแกแ, แคแฃแแแแ แกแแฎแกแ แแแ - แแแกแฃแแ แฌแแแก แแแแแแแแแแแจแ) - แ แแแฃแแแ แฃแแแ
- แแขแแแ แแแ แแกแขแแ แแฃแแ แแแแแชแแแแแ (แแแแแแฃแแ แกแแแแญแ แ แฌแแแกแแแแก, แแแแแแ แแแญแ แแแแก แแแฎแฃแ แแแก แคแแกแแก แฃแแแแฃแ แแกแ แแแแจแแแแแแแแแ) - แ แแแฃแแแ แฃแแแ
- แแขแแแ แแแ แฃแแฎแแแกแ แกแแแแญแ แ แแแแแชแแแแแ - แ แแแฃแแแ แฃแแแ
- แแขแแแ แแแ แแแแแแแขแแ แแแแก แแแ แแแแฃแแ แกแแ แแแแแแฃแแ แฃแกแแคแ แแฎแแแแแกแแแแก - แ แแแฃแแแ แฃแแแ
แ แแแแ แช แแแกแแแแแแแแ แแงแ, แฉแแแ แแแ แฉแแแ แแ แแแฅแขแแก แกแแฎแแแก แแฃแแแแแ: แฐแแ แขแแแ
แแแแแแแแแ แแแคแ แแกแขแ แฃแฅแขแฃแ แแก
แกแแแแฃแ แ, แ แ แแฅแแ แฃแแแ, แซแแแแ แแ, แแฃแแชแ, แงแแแแแคแแ แ แ แแช แแฅแแแ แฃแแแ แแแแแแแแ, แแ แแก แแแฌแแ แแ แแแขแแ แ แแแแคแแแฃแ แแชแแ docker-compose-แแกแแแแก แแแคแแแแ (แแ แแแแแแ แแ - แแ แ แแแแขแแแแแ แจแ), แแแคแแ แแแ (แแฃ แแแแแแ แจแแแฎแแแแ แจแแขแงแแแแแแแแแก แแแแแแจแ), mongodb. แแแฆแแแ [docker-compose.yml](
version: '3'
services:
db:
container_name: horton-mongodb-local
image: mongo:4.2-bionic
command: mongod --port 20017
restart: always
ports:
- 20017:20017
environment:
- MONGO_INITDB_DATABASE=horton
- MONGO_INITDB_ROOT_USERNAME=admin
- MONGO_INITDB_ROOT_PASSWORD=admin_password
kafka-service:
container_name: horton-kafka-local
image: obsidiandynamics/kafka
restart: always
ports:
- "2181:2181"
- "9092:9092"
environment:
KAFKA_LISTENERS: "INTERNAL://:29092,EXTERNAL://:9092"
KAFKA_ADVERTISED_LISTENERS: "INTERNAL://kafka-service:29092,EXTERNAL://localhost:9092"
KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: "INTERNAL:PLAINTEXT,EXTERNAL:PLAINTEXT"
KAFKA_INTER_BROKER_LISTENER_NAME: "INTERNAL"
KAFKA_ZOOKEEPER_SESSION_TIMEOUT: "6000"
KAFKA_RESTART_ATTEMPTS: "10"
KAFKA_RESTART_DELAY: "5"
ZOOKEEPER_AUTOPURGE_PURGE_INTERVAL: "0"
kafdrop:
container_name: horton-kafdrop-local
image: 'obsidiandynamics/kafdrop:latest'
restart: always
ports:
- '9000:9000'
environment:
KAFKA_BROKERCONNECT: kafka-service:29092
depends_on:
- kafka-service
แแฅ แกแแแ แแแ แแ แแคแแ แแ แ แแฃแแ. แแแคแแแแ แแแแแชแฎแแแแ แแ แ แแกแแแแแแ: แแ แแ (แจแแแ) แแแแแแแแชแแฃแ แ แฅแกแแแแก แจแแแแแ แแแแแกแแงแแแแแแแ แแ แแแแ แ (แแแ แ) แแแ แแแแ แแแแฎแแแแแกแแแแก, แแกแ แ แแ, แแแ แแแแแฃแแแแแแแก แแแ แแแ แแ. 2181 - แแแแแแ แแแก แแแ แขแ. แแแแแ แฉแแแ, แแคแแฅแ แแ, แแแกแแแแแแ.
แแ แแแฅแขแแก แฉแแแฉแฎแแก แแแแแแแแแ
แซแแ แแแแ แแแ แกแแแจแ แฉแแแแ แแ แแแฅแขแแก แกแขแ แฃแฅแขแฃแ แ แแกแ แฃแแแ แแแแแแงแฃแ แแแแแแก:
horton
โโโ docker-compose.yml
โโโ horton
โโโ agents.py *
โโโ alphavantage.py *
โโโ app.py *
โโโ config.py
โโโ database
โ โโโ connect.py
โ โโโ cruds
โ โ โโโ base.py
โ โ โโโ __init__.py
โ โ โโโ security.py *
โ โโโ __init__.py
โโโ __init__.py
โโโ records.py *
โโโ tasks.py *
*แงแแแแแคแแ แ แ แแช แแฆแแแแจแแ แฉแแแ แฏแแ แแ แแแฎแแแแ, แฃแแ แแแแ แแฅแแแแ แชแแ แแแ แคแแแแแแก.**
แฉแแแ แจแแแฅแแแแแ แกแขแ แฃแฅแขแฃแ แ. แแฎแแ แแแแแแแขแแ แกแแญแแ แ แแแแแแแแแแฃแแแแแแ, แฉแแแฌแแ แแ แแแแคแแแฃแ แแชแแ แแ แแแแฃแแแแจแแ แแแ mongodb-แก. แกแขแแขแแแจแ แแ แแแแแฌแแแแแ แคแแแแแแแก แกแ แฃแ แขแแฅแกแขแก, แ แแ แแ แแแแแแแแแแ, แแแแ แแ แแแแชแแ แแแฃแแแแก แกแแญแแ แ แแแ แกแแแแแ.
แแแแแฌแงแแ แแแแแแแแแแฃแแแแแแแแ แแ แแแขแ แแ แแแฅแขแแก แจแแกแแฎแแ -
แจแแแแแแ, แฉแแแ แแแฌแงแแแ แแแแแแแแแแฃแแแแแแแก แแแกแขแแแแชแแแก แแ แแแ แขแฃแแแฃแ แแก แจแแฅแแแแก (แแ แจแแแแซแแแแ แแแแแ แจแแฅแแแแ venv แกแแฅแแฆแแแแ แแ แแแแแฅแขแแฃแ แแ แแแ แแแ):
pip3 install poetry (ะตัะปะธ ะตัั ะฝะต ัััะฐะฝะพะฒะปะตะฝะพ)
poetry install
แแฎแแ แจแแแฅแแแแ
แแแแแแกแแแ แแแแแแจแแ แแแแกแแก แงแแแแแคแแ แ แกแแแแแแ แแแ แขแแแแ. แแแแแแชแฎแแแ
แ แ แแแฎแแแแ แจแแแแแ?
แกแขแแขแแ แแ แช แแฃ แแกแ แแ แซแแแแ, แ แแแแแ แแฅ แแฎแแแแ แแแขแแแแชแแแแ แแ แแแแแแแแแแแ แแกแแฃแแ แแ, แแแแขแแ แแฃ แแแแแแ แแแแแ - แแแแ แแแแแ, แ แแ แจแแแแแ แแแฌแแแก แแฅแแแแ แแแฅแแแแแแ แแ แแ แแคแแแ.
แแกแ แ แแ, แแ แแแแแแแแ แแแฌแแแจแ แฉแแแ:
- แแแแแ แแแแฌแแ แแ แแแขแแ แ แแแแแแขแ alphavantage-แแกแแแแก aiohttp-แแ แฉแแแแแแแก แกแแญแแ แ แแแแ แฌแแ แขแแแแแแก แแแแฎแแแแแ.
- แแแแแ แจแแแฅแแแแ แแแแแขแ, แ แแแแแแช แจแแแแ แแแแแก แแแแแชแแแแแก แคแแกแแแแ แฅแแฆแแแแแแแก แแ แแแแแแแก แแกแขแแ แแฃแแ แคแแกแแแแก แจแแกแแฎแแ.
แฌแงแแ แ: www.habr.com