ืืื ืึทืืื ืืื ืืื ืืขืงืืืขื ืฆื ืืขืื?
ื ืื ืืึทื ื ืฆืืจืืง ืืื ืืขืืื ืฆื ืึทืจืืขืื ืืืืฃ ืื ืืึทืงืขื ื ืคืื ืึท ืืขืืกื ืืึธืืืื ืคึผืจืืืขืงื, ืืื ืืืึธืก ืขืก ืืื ื ืืืืืง ืฆื ืึธืจืืึทื ืืืืจื ืื ืจืขืืืืขืจ ืืืจืืคืืจืื ื ืคืื ืึท ืืจืืืก ื ืืืขืจ ืคืื ืืื ืืขืจืืจืื ื ืืึทืกืงืก ืืื ืงืึธืืคึผืืขืงืก ืืฉืืื ืืช ืืื ืจืืงืืืขืก ืคึฟืึทืจ ืืจืื-ืคึผืึทืจืืื ืืึทืืื ืื ืืก. ืื ืคึผืจืืืขืงื ืืื ืืืกืื ืืงืจืึทื ืึทืก ืืื ืืืืืขืจ ืืื ืืขืงืืืขื, ืขืก ืืื ืึท ืคึผืฉืื ืืขืงืึทื ืืืึทื ืคึฟืึทืจ ืงืจืึทื-ืืึทื ืืฉืื ื ืืึทืกืงืก: ืึท ืฉืืืืฃ ืงืึธื ืืจืึธืืืจืื ื ืื ืงืจืึทื ื ืฆืืื ืืื ืงืึทืืขืจ ืืจืืคึผืขืก ืคืื ืงืึธืจืึธืืืื ืขืก ืืืจื ืฆืื ืืืคืงืื - ืืขืจ ืฆืืืึทื ื ืืื ืืขืืืขื ืคึผืึทืกืืง ืืื ืขืก ืืขื ืขื ืืึทืืึทื ื ืืื ืืื ืืขืจืืขืจ ืคืื ืึทืืึท ืงืึธืจืึธืืืื ื. , ืืืขืจ , ืฐืข ื ืืฒืข ืจ ืฆืื , ืื ื ืื ื ืืืืขืจืืขืฉืืื ื ืฆืฐ ืฒ ืืืืื ื , ืื ื ืื ื ืืขืืื ื ืืจืืื ื ืฐืขื ื ืืจืืื ืืืืจ ื ื ื ืืจืืืืข ืจ ืืืืคืืืืข ืจ ืืื ื ืืขืงืืขืจ , ืขืืืขื ืข ืืจืืขืืข ืจ ื.ื.ืื.
ืขืจืฉืืขืจ ืืื ืืึทืฉืืึธืกื ืฆื ืคึผืจืืืืจื ืกืขืืืขืจืื, ืืืึธืก ืืื ืืขืืืืื ื ืคืจืืขืจ. ืจืขืื ืฆื ืืขืจ ืืืกืื ืืงืจืึทื ืึทืก ื ืึทืืืจ ืคืื ืื ืคึผืจืืืขืงื, ืืื ืืืืืื ืืื ืื ืงืฉืื ืืื ืืขืืขื
ืืื ืืืขื ืืึธืื ืืึธืก, ืื ืคึผืจืืืขืงื ืืื ืืืืขืจ ืืฉืืงืึทืืืข ืืื ืึทืจืืขื ืืึทื ืฅ ืืฆืืื ืืื ืื ืืขืจืข ืึทืคึผืืึทืงืืืฉืึทื ื ืคืื ืืื ืืืขืจ ืืึทื ืฉืึทืคึฟื, ืืื ืืขืจ ืืืืจ ืืื ืืืื ืึทื ืขืจ ืืื ืืืืืืช ืฆื ืจืึธืืื ืขืก ืืื ืคึผืจืึธืืืงืฆืืข ืืืจื ื ืืฆื ืึท ืืืกืื ืืงืจืึทื ืึทืก ืืขืงื. ืึธืืขืจ, ืืืืืขืจ, ืขืก ืืื ื ืืฉื ืืึทืงืข ืคึผืึทืกื ืืืจ, ืืื ืขืก ืคืืจืงืขืจื ืืืืก
ืืื ืืขื ืึทืืืื ื, ืืื ืื ืืขืืืืื ืงืืงื ืึทืืืขืจื ืึทืืืืืขืก ืืื ืืขืคืื ืขื ืขืก! ืื ืงืจืืืืืขืจื ืคืื ืกืขืืืขืจืื, ืกืคึผืึทืกืืคืืงืื, ืืื ืืื ืคึฟืึทืจืฉืืืื ืขืก
ืืืื, ืืืจ ืงืขื ืขื ืงืืงื
ืืืึธืก ืืึธื ืืืจ ืืึธื?
ืึทืืื, ืืื ืึท ืงืืจืฅ ืกืขืจืืข ืคืื โโโโืึทืจืืืงืืขื, ืืื ืืืขื ืืืืึทืื ืืืจ ืืื ืฆื ืืึทืืืขื ืืึทืื ืคึฟืื ืืื ืืขืจืืจืื ื ืืึทืกืงืก ื ืืฆื Faust. ืืขืจ ืืงืืจ ืคึฟืึทืจ ืืื ืืืขืจ ืืืึทืฉืคึผืื ืคึผืจืืืขืงื ืืืขื ืืืื, ืืื ืืขืจ ื ืึธืืขื ืกืึทืืืืฉืขืก,
ืคึผ.ืก. ืืืื ืืฉืคืื ืืืื ืื ืืืืื ืืื ืืืึธืก ืื ืคึผืึทืจืึทืืจืึทืฃ ืืืขืื ืืึธื ืืืึธืจืื ื ืืื ืืขืืืขื ืืขืฉืจืืื, ืืื ืืจืึทืืื ืึทื ืื ืืืืขื ืขืจ ืืื ืื ืกืืฃ ืคืื ืื ืืขืฆืืข ืึทืจืืืงื ืืืขื ื ืึธื ืงืืงื ืขืคึผืขืก ืืื ืืึธืก:
ืคึผืจืึธืืขืงื ืืืืขืจืคืขื ืืฉื
ืจืขืื ืฆื ืืขื ืคืึทืงื ืึทื ืืื ืืึธืื ืฉืืื ืฆืืืขืืืื, ืืึธืื ืืื ืื ืืึทืื ืึท ืงืืืื ืจืฉืืื ืคืื ืืืึธืก ืื ืกืขืจืืืืก ืืึธื ืงืขื ืขื ืฆื ืืึธื:
- ืฆืืคึฟืขืืืงืขืจ ืกืืงืืืจืึทืืื ืืื ืึทื ืืืืขืจืืืืง ืคืื ืืื (ืึทืจืืึทื ืืขืจืขืื ื ืคึผืจืึทืคืืฅ ืืื ืืึธืกืกืขืก, ืืืึธื ืืืึทื, ืืขืื ืืืืคื - ืคึฟืึทืจ ืื ืืขืฆืืข ืืึธืจ) - ืงืขืกืืืืขืจ
- ืืคึผืืึธืึทื ืืืกืืืจืืฉืข ืืึทืื (ืคึฟืึทืจ ืืขืืขืจ ืืจืืืืื ื ืืึธืจ, ืืขืคึฟืื ืขื ืขืงืกืืจืขื ืืืึทืืืขืก ืคืื ืื ืงืืึธืืืื ื ืคึผืจืืึทื ืคืื ืืจืืืืื ื) - ืงืขืกืืืืขืจ
- ืฆืืคึฟืขืืืงืขืจ ืืขืฆื ืืจืืืืื ื ืืึทืื - ืงืขืกืืืืขืจ
- ืฆืืคึฟืขืืืงืขืจ ืึท ืงืึทืกืืึทืืืืื ืจืฉืืื ืคืื ืื ืืืงืึทืืึธืจืก ืคึฟืึทืจ ืืขืืขืจ ืืืืขืจืืืื - ืงืขืกืืืืขืจ
ืืื ืืขืจืืืึทืจื, ืืืจ ืงืืืึทืื ืึท ื ืึธืืขื ืคึฟืึทืจ ืื ืคึผืจืืืขืงื ืคึฟืื ืงืจืึทืฆื: ืืึธืจืืึธื
ืืืจ ืืขื ืขื ืคึผืจืืคึผืขืจืื ื ืื ืื ืคืจืึทืกืืจืึทืงืืฉืขืจ
ืืขืจ ืืืื ืืื ืืืืขืจ ืฉืืึทืจืง, ืึธืืขืจ, ืึทืืข ืืืจ ืืึทืจืคึฟื ืฆื ืืึธื ืืื ืฆื ืฉืจืืึทืื ืึท ืงืืืื ืงืึธื ืคืื ืคึฟืึทืจ ืืึธืงืขืจ-ืงืึธืืคึผืึธืกืข ืืื ืงืึทืคืงืึท (ืืื ืืึธืึธืงืขืขืคึผืขืจ - ืืื ืืืื ืงืึทื ืืืื ืขืจ), ืงืึทืคืืจืึธืคึผ (ืืืื ืืืจ ืืืืื ืฆื ืงืืงื ืืื ืึทืจืืืงืืขื ืืื ืืขืืขืก), ืืึธื ืืึธืื. ืืืจ ืืึทืงืืืขื [ืืึธืงืงืขืจ-ืงืึธืืคึผืึธืกืข.ืืื](
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. ืืื ืืืขื ื ืืฉื ืฆืืฉืืขืื ืื ืคืื ืืขืงืกื ืคืื ืื ืืขืงืขืก ืืื ืืขื ืึทืจืืืงื, ืึทืืื ื ืืฉื ืฆื ืคืึทืจืืึทืืื ืขืก, ืึธืืขืจ ืืื ืืืขื ืฆืืฉืืขืื ืืื ืงืก ืฆื ืื ื ืืืืืง ืืืขืจืกืืขืก.
ืืึธืืืจ ืึธื ืืืืื ืืื ืืืคึผืขื ืืึทื ืกืื ืืื ืืขืืึท ืืืขืื ืื ืคึผืจืืืขืงื -
ืืขืจื ืึธื, ืืืจ ืึธื ืืืืื ืฆื ืื ืกืืึทืืืจื ืืืคึผืขื ืืึทื ืกืื ืืื ืฉืึทืคึฟื ืึท ืืืืจืืืขืืขืื (ืึธืืขืจ ืืืจ ืงืขื ืขื ืืึทืื ืื ืืืขืื ืืขืงืข ืืื ืืื ืึทืงืืึทืืืืื ืื ืกืืืืืืข):
pip3 install poetry (ะตัะปะธ ะตัั ะฝะต ัััะฐะฝะพะฒะปะตะฝะพ)
poetry install
ืืืฆื ืืึธืืืจ ืืึทืื
ืืืขื ืงืึทื ืขืงืืื ื ืฆื ืืึธื ืืึธ, ืึทืืฅ ืืื ืืึทื ืฅ ืคึผืฉืื. ืืืืืข
ืืืึธืก ืืืขื ืคึผืึทืกืืจื ืืืืึทืืขืจ?
ืืขืจ ืึทืจืืืงื ืืื ื ืืฉื ืืืืขืจ ืืึทื ื, ืืืืึทื ืืึธ ืืื ื ืึธืจ ืจืขืื ืืืขืื ืืึธืืืึทืืืืืฉืึทื ืืื ืฆืืืจืืืืื ื, ืึทืืื ืืึธื ื ืื ืืึทืฉืืืืืงื ืืืจ - ืืื ืฆืืืึธื ืึทื ืืขืจ ืืืืึทืืขืจ ืืืื ืืืขื ืืึธืื ืงืึทืืฃ ืืื ืืจืึทืคืืงืก.
ืึทืืื, ืืื ืืขื ืืืืขืจ ืืืืึทืืขืจ ืืืื ืืืจ:
- ืืึธืืืจ ืฉืจืืึทืื ืึท ืงืืืื ืงืืืขื ื ืคึฟืึทืจ ืึทืืคืึทืืืึทื ืืืืืฉ ืืืืฃ aiohttp ืืื ืจืืงืืืขืก ืคึฟืึทืจ ืื ืขื ืืคึผืืื ืืก ืืืึธืก ืืืจ ืืึทืจืคึฟื.
- ืืึธืืืจ ืืึทืื ืึทื ืึทืืขื ื ืืืึธืก ืืืขื ืงืืืึทืื ืืึทืื ืืืขืื ืกืืงืืืจืึทืืื ืืื ืืืกืืืจืืฉืข ืคึผืจืืืกืึทื ืคึฟืึทืจ ืืื.
ืืงืืจ: www.habr.com