ืืื ืืืขืชื ืืืืืช ืืื?
ืื ืืืื ื ืืืฆืชื ืืขืืื ืขื ืืงืฆื ืืืืืจื ืฉื ืคืจืืืงื ืขืืืก ืืืื, ืื ืืื ืฆืืจื ืืืจืื ืืืฆืืข ืงืืืข ืฉื ืืกืคืจ ืจื ืฉื ืืฉืืืืช ืจืงืข ืขื ืืืฉืืืื ืืืจืืืื ืืืงืฉืืช ืืฉืืจืืชื ืฆื ืฉืืืฉื. ืืคืจืืืืงื ืืื ืืกืื ืืจืื ื ืืืคื ื ืฉืืืขืชื, ืืื ืื ืื ืื ืื ืคืฉืื ืืืฉืืืืช ืืคืขืืช cron: ืืืืื ืืืืืงืช ืืช ืืฉืขื ืื ืืืืืช ืืืฉืงืช ืงืืืฆืืช ืฉื coroutines ืืจื gather - ืืืืฉื ืืื ืืชืืจืจื ืืืงืืืืช ืขื ืฉืืื ืขืฉืจืืช ืืืืืช ืฉื coroutines ืืืื. ืืืื ืืืฉืจ ืืกืคืจื ืขืื ืขื ืืืคืืื, ื ืืืฆืชื ืืืฉืื ืขื ืืจืืื ืชืืจ ืืฉืืืืช ืจืืื ืขื ืืชืืื, ืืกืคืจ ืขืืืืื ืืื'.
ืจืืฉืืช ืืืืืชื ืื ืกืืช ืกืืจื, ืฉืืฉืชืืฉืชื ืื ืืขืืจ. ืืืื ืืืืคื ืื-ืกืื ืืจืื ื ืฉื ืืคืจืืืงื, ืฆืืืชื ืืชืื ืืฉืืื ืืจืืืชื
ืื ื ืืืื ืืช ืื, ืืคืจืืืงื ืืืื ืืขื ืืื ืืขืืื ืืฆืืจื ืื ืืืฆืืืช ืืืืฉืืืื ืืืจืื ืฉื ืืฆืืืช ืฉืื ื, ืืืืืืจ ืขืฆืื ืืืืจ ืฉืืื ืืฆืืื ืืืืื ืืืชื ืืืืฆืืจ ืืืืฆืขืืช ืืืืจ ืืกืื ืืจืื ื. ืืื, ืืฆืขืจื, ืื ืื ืืืฉ ืืชืืื ืื, ืืคื ืฉืืชืืจืจ
ืืืงืฉืจ ืืื ืืชืืืชื ืืืคืฉ ะฐะปััะตัะฝะฐัะธะฒั ืืืฆื ืืช ืื! ืืืฆืจื ืืกืืจื, ืกืคืฆืืคืืช, ืืคื ืืื ืชื
ืืื ืื, ืืชื ืืืื ืืืกืชืื
ืื ืื ืื ื ืขืืฉืื?
ืืื, ืืกืืจืช ืืืืจืื ืงืฆืจื, ืื ื ืืจืื ืืื ืืืฆื ืืืกืืฃ ื ืชืื ืื ืืืฉืืืืช ืจืงืข ืืืืฆืขืืช ืคืืืกื. ืืืงืืจ ืืคืจืืืงื ืืืืืื ืฉืื ื ืืืื, ืืคื ืฉืืฉื ืืจืื,
ื .ื ืื ืืฉืคืื ืืคื ืืืืืืื ืฉืื ื ืืชืื ืื ืงืืื ืืืื ื ืืืืจ, ืื ื ืืืฉื ืฉืืงืืจื ืืกืืฃ ืืืืืจ ืืืืจืื ืขืืืื ืืืจืื ืืขืจื ืื:
ืืจืืฉืืช ืืคืจืืืงื
ืืฉื ืืขืืืื ืฉืืืจ ืืืืืชื, ืืืื ื ืขืฉื ืจืฉืืื ืงืื ื ืฉื ืื ืฉืืฉืืจืืช ืืืืจ ืืืืืช ืืกืืื ืืขืฉืืช:
- ืืขืื ื ืืืจืืช ืขืจื ืืกืงืืจื ืืืืืช ืฉืืื (ืืืื ืจืืืืื ืืืคืกืืื, ืืืื, ืชืืจืื ืืืืื ืื - ืืฉื ื ืืืืจืื ื) - ืืืืคื ืงืืืข
- ืืขืื ื ืชืื ืื ืืืกืืืจืืื (ืืื ืฉื ืช ืืกืืจ, ืืฆื ืขืจืืื ืงืืฆืื ืืื ืฉื ืืืืจ ืืกืืืจื ืฉื ืืืกืืจ) - ืืืืคื ืงืืืข
- ืืขืื ื ืชืื ื ืืกืืจ ืขืืื ืืื - ืืืืคื ืงืืืข
- ืืขืื ืจืฉืืื ืืืชืืืช ืืืฉืืช ืฉื ืืื ืืืงืืืจืื ืขืืืจ ืื ื ืืืจ ืขืจื - ืืืืคื ืงืืืข
ืืฆืคืื, ืื ื ืืืืจืื ืฉื ืืคืจืืืงื ืืืคืก: ืืืจืืื
ืื ืื ื ืืืื ืื ืืช ืืชืฉืชืืช
ืืืืชืจืช ืืืืื ืืืงื, ืขื ืืืช, ืื ืื ืฉืืชื ืฆืจืื ืืขืฉืืช ืืื ืืืชืื ืชืฆืืจื ืงืื ื ืขืืืจ docker-compose ืขื kafka (ื-zookeeper - ืืืืื ืืื), kafdrop (ืื ืื ืื ื ืจืืฆืื ืืืกืชืื ืขื ืืืืขืืช ืื ืืฉืืื), mongodb. ืื ืื ื ืืงืืืื [docer-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. ืื ืืืกืืจ ืืช ืืืงืกื ืืืื ืฉื ืืงืืฆืื ืืืืืจ, ืืื ืื ืืขืื ืืืช, ืื ืืืื ืงืืฉืืจืื ืืืจืกืืืช ืืืจืืฉืืช.
ืืืื ื ืชืืื ืขื ืชืืืช ืืืื ืืืื ืืคืจืืืงื -
ืืืืจ ืืื, ืื ื ืืชืืืืื ืืืชืงืื ืชืืืช ืืืืฆืืจ virtualenv (ืื ืฉืืชื ืืืื ืืืฆืืจ ืืช ืชืืงืืืช venv ืืขืฆืื ืืืืคืขืื ืืช ืืกืืืื):
pip3 install poetry (ะตัะปะธ ะตัั ะฝะต ัััะฐะฝะพะฒะปะตะฝะพ)
poetry install
ืขืืฉืื ืืืื ื ืืฆืืจ
ืืฉืืชืืืจืื ืืืื ืื ืืื ืื ืคืฉืื. ืืืจืื
ืื ืืงืจื ืืืจ ืื?
ืืืืืจ ืื ืืจืื ืืืืืื, ืืืืืื ืฉืืื ืื ื ืืืืจ ืจืง ืขื ืืืืืืฆืื ืืืื ื, ืื ืื ืชืืฉืืื ืืืชื - ืื ื ืืืืื ืฉืืืืง ืืื ืืืื ืืงืฉื ืืืจืคืืงื.
ืื, ืืืืง ืืื ืืืฉ ืื ืื ื:
- ืืืื ื ืืชืื ืืงืื ืงืื ืขืืืจ alphavantage ื-aiohttp ืขื ืืงืฉืืช ืื ืงืืืืช ืืงืฆื ืฉืื ืื ื ืฆืจืืืื.
- ืืืื ื ืืฆืืจ ืกืืื ืฉืืืกืืฃ ืขืืืจื ื ืชืื ืื ืขื ื ืืืจืืช ืขืจื ืืืืืจืื ืืืกืืืจืืื.
ืืงืืจ: www.habr.com