αααα αααααα»αααααααα αααααα?
αα·αααΌαααα»ααααΆααααα»αααααΌαααααΎααΆαααΎαααααααΆαααααααααααααααααααΆαααααα»αααααα ααααααα»ααααα αΆαααΆα αααααΌααααα αααΆαααααα·ααααα·ααΆαααα αΆααααα·α αα ααΆαααααααΆαααααααα½αα ααα½αααααΆαα½αααΉαααΆαααααΆαααα»αααααΆα αα·αααααΎαααααΆααααααΆααααααΆααΈααΈααΈα αααααααααααΊα’ααααΆα α αΎααα»ααααααααααα»ααα ααΆααΆαααααααΆαααΆαααααα½ααααααΆαααα·α αα ααΆαα αΆααααααΎα cronα ααααα·ααα»ααα·αα·αααααΎααααααααΆαα αα α»αααααα αα·αααΆαααΎαααααΎαααΆααααα»ααα coroutines ααΆααααααΆααααααΌααααα»α - αα·ααΈααΆααααααααααΆααααααα ααΆα’αΆα ααα½αααααΆααα αΌααααααΆααααααΆααααααααααΆαααα·ααα·αααΆααααα ααααααΆαααΆααααα αα ααααααα ααα½ααααααα½αααααΎαααΈααΈαααΆαα αααα»αααααΌααα·αα’αααΈααΆααααα ααα½ααα·α αα ααΆαααααααΆααΆαα½αααααααα ααααααααΆα αααΎαααΆααααΆααΎαα
ααααΌααααα»ααααααα
α
α·αααααΆαααααααααΎ Celery ααααααα»αααααΆααααααΎααΈαα»αααα αααααΆαααααααα’ααααΆααααααααα αααα»αααΆαα
αΌααα
αααα»ααααα½α α αΎαααΆαααΎα
αααα»αααΉααα·ααΆαααΏαααα ααααααααααα½αα±ααα
αΆααα’αΆααααααααΆαα α αΎαααααΎαααΆααααΆααααααααα
αααα»ααααααα·ααΈαααααααααααααα»αααααααΎα α αΎαα’ααααα·ααααααααΆααααΆααα·ααΆαααΆααΆααα’αΆα
ααααααΆα
αΌααα
αααα»αααα·ααααααααααααΎα’αΆαα’ααααΆαα ααα»ααααααΆα’αα»αα ααΆαα·αααΆαα·αααααΉααααα»ααα ααΌα
αααααΆααΆαααααααααΆα
αααα»ααααααααααα»αα
αΆααααααΎαααΎα αααααΎααααα½α α αΎαααΆαααααΎαααΆ! α’ααααααααΎα celery ααΆαα·αααααΌα
ααααααα»αααα
α’αααααα’αΆα
ααΎααααααα
ααΎβααΎαβααααΎα’αααΈ?
ααΌα
αααα αα
αααα»αα’αααααααααΈα αααα»αααΉααααα αΆαα’αααααΈαααααααααΌααα·ααααααααΈαα·α
αα
ααΆαααααααΆαααααααααααααΎ Faust α ααααααααααΆααααααααα§ααΆα αααααααααΎαααΉαααΆαααΌα
ααααααααααΆααααα αΆα
PS αα·αα·α ααααααααααα»αα α·ααααααα ααα»α α’αααΈααΆααααα½ααα·αα·αααααααΌαααΆαααααααααα»ααα·αααΆα’αααα’αΆααα α α»ααααα ααααα’αααααα α»ααααααααΉααα ααααΎααα ααΌα ααα:
αααααΌαααΆααααααα
αααααΆαβααβαααα»αβααΆαβαααααΆβαα½α βα αΎα ααΌαβααααΎβαααααΈβααΌα βαα½αβα’αααΈβα’αααΈβαααβααααΆααααβαα½αβααααΎα
- αααα ααααΌααααα αα·ααα·αααααΆαααΌαα αααα½ααα (αα½αααΆααααααΆααα αααα αα·αααΆαααΆααααα ααΆααΆααα»αααααΆα ααα αΌαααΆα αααααΆαα - αααααΆααααααΆααα»α) - αααααΆαα
- αααα»αα‘αΎααα·αααααααααααααα·ααΆααααα (αααααΆααααααΆααα½αααΌαααΈαα½αα ααααααααααααααααΆααααααααααα·αααααΆααα½αααΌα) - αααααΆαα
- αααα αααα·αααααααα½αααΌαα α»αααααααααα»α - αααααΆαα
- αααα αααααααΈααΌα ααΆααααΆααααααΌαααΆααααααΆαααα»ααααα·ααΆαααΈαα½αα - ααΆαααααΆαα
ααΌα αααααΆαααααΉααα»α ααΎαααααΎαααΎαααααααααααΆααααααααααΈααααΌαα α αααα»α
ααΎααααα»ααααα αα αααααΆαα ααΆαααααααα
α
αααααΎααα·αααΆααααΆαα αααααΆαααΆαααΆααααα α’αααΈαααα’αααααααΌαααααΎααΊαααααααΆααααααααΌα
αα½ααααααΆαα docker-compose ααΆαα½α kafka (αα·α zookeeper - αα
αααα»ααα»ααααα½α) kafdrop (ααααα·αααΎααΎαα
ααααΎαααΆααααα»ααααααΆααα) 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
αα·αααΆαα’αααΈαααα»αααααΆααα ααΈαααααΆαααααααα α’αααααααΆααααΈαααΆααααααΌαααΆααααααΆααααααΆαα kafka: αα½α (ααΆααααα»α) αααααΆααααααΎαα ααΆααααα»ααααααΆααααΆαααΆαα» αα·αααΈααΈα (ααΆααααα ) αααααΆααααααΎααΈααΆααααα ααΌα αααααα½αααααΆααααααΌαααΆαα ααΆααααα α 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 *
*α’αααΈααααααααΆαααααααα»αααΆαααααααααΆαα ααΎααα·αααΆαααααααΆαα ααΎαααααΆαααααααααΎαα―αααΆααααα**
ααΎαααΆααααααΎααα ααΆααααααααα α₯α‘αΌαααα α αΌαααΎαααααααααΆαα’αΆαααααα αΆαααΆα α ααααα config α αΎαααααΆαααα mongodb α αααα»αααΉααα·ααααααα’αααααααααααααα―αααΆααα αααα»αα’αααααααααα ααΎααααΈαα»αα±αααααααΆαααα ααα»αααααααα»αααΉαααααααααααααΆαααα ααΆααααααα αΆαααΆα αα
α
αΌαα
αΆααααααΎαααΆαα½αααΆαα’αΆααααα αα·αααααΆα’αααΈαααααα -
αααααΆαααα ααΎαα αΆααααααΎαααα‘αΎαααΆαα’αΆααααα αα·ααααααΎα virtualenv (α¬α’αααα’αΆα αααααΎααα venv ααααααα½αα―α αα·αααααΎα±ααααα·ααααΆαααααα)α
pip3 install poetry (Π΅ΡΠ»ΠΈ Π΅ΡΡ Π½Π΅ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ΠΎ)
poetry install
α₯α‘αΌααααααΌααααααΎα
αα
αααααααΆαααα
ααα»αα ααα α’αααΈααααααααΆαααΊααΆααααααΆααα ααΆααααααΆα
ααΎααΉαααΆαα’αααΈααΎαα‘αΎααααααΆαα?
α’ααααααα·αααΌαααα»ααααΆααα ααααααα ααΈααααααα»αααααΆαααααα·ααΆαα’αααΈααΆαααΎαααΉαα α·ααα αα·αααΆααααα α ααΌα αααααα»ααααααααααα»αα’αΈ αααα»ααααααΆααΆααααααααααΆααααΉαααΆααααααααΆα αα·αααααΆα ααα·αα
ααΌα αααααα αααα»αααααααααααΆααααα ααΎα:
- α αΌαααΎαααααααααααα·ααΈααΌα αα½ααααααΆαα alphavantage αα ααΎ aiohttp ααΆαα½αααΉαααααΎαααααΆααα ααα»α αααα αααααααΎαααααΌαααΆαα
- ααααααααΎαααααΆααααΆααααααΉααααααΌααα·ααααααααααΈααΈααΌααααα αα·αααααααααααααα·ααΆααααααααααΆαααα½αααα
ααααα: www.habr.com