Ahoana no nahatonga ahy hiaina toy izany?
Tsy ela akory izay dia tsy maintsy niasa teo amin'ny lamosin'ny tetikasa iray feno entana aho, izay nilaina ny nandaminana ny fanatanterahana tsy tapaka ny asa maro be miaraka amin'ny kajy sarotra sy ny fangatahana serivisy an'ny antoko fahatelo. Ny tetikasa dia asynchronous ary talohan'ny nahatongavako dia nanana rafitra tsotra ho an'ny asa fanokafana cron izy io: tadio iray manamarina ny fotoana ankehitriny ary manokatra vondrona coroutine amin'ny alàlan'ny fanangonana - io fomba io dia azo ekena mandra-pahatongan'ny coroutine am-polony sy an-jatony. , na izany aza, rehefa nihoatra ny roa arivo ny isan'izy ireo, dia tsy maintsy nieritreritra ny handamina filaharana ara-dalàna miaraka amin'ny broker iray aho, mpiasa maromaro, sy ny sisa.
Voalohany dia nanapa-kevitra ny hanandrana Seleria, izay efa nampiasaiko teo aloha aho. Noho ny toetra asynchronous ny tetikasa, dia niditra tao amin'ny fanontaniana aho ary nahita
Izao no holazaiko, tena mahaliana ny tetikasa ary miasa tsara amin'ny fampiharana hafa an'ny ekipanay, ary ny mpanoratra mihitsy no nilaza fa afaka namoaka izany ho famokarana izy tamin'ny fampiasana dobo asynchronous. Saingy, indrisy, tsy tena nety tamiko izany, araka ny hita
Amin'io lafiny io dia nanomboka nijery aho safidy ary nahita azy! Ny mpamorona ny seleria, indrindra, araka ny fahazoako azy
Azonao atao koa ny mijery
Inona no ataontsika?
Noho izany, amin'ny andian-dahatsoratra fohy, hasehoko anao ny fomba fanangonana angon-drakitra avy amin'ny asa any ambadika mampiasa Faust. Ny loharano ho an'ny tetikasa ohatra ataontsika dia, araka ny hevitr'ilay anarana,
P.S. Raha jerena amin'ny fahatokisana nanoratana ny fehintsoratra momba ny fanaraha-maso, dia heveriko fa mbola hijery toy izao ny mpamaky amin'ny faran'ny lahatsoratra farany:
Ny fepetra takian'ny tetikasa
Noho ny zava-misy izay efa nampanantenaiko dia andao hanao lisitra kely ny zavatra tokony ho vitan'ny serivisy:
- Ampidiro ny antoka sy ny topimaso momba azy ireo (anisan'izany ny tombom-barotra sy ny fatiantoka, ny fifandanjana, ny vola miditra - nandritra ny taona lasa) - tsy tapaka
- Ampidiro ny angona ara-tantara (isaky ny taom-pivarotana, tadiavo ny sanda faran'izay henjana amin'ny vidin'ny varotra) - tsy tapaka
- Mampiakara angon-drakitra farany momba ny varotra - tsy tapaka
- Mampiakara lisitry ny tondro ho an'ny fiarovana tsirairay - tsy tapaka
Araka ny efa nampoizina, misafidy anarana ho an'ny tetikasa hatrany am-boalohany izahay: Horton
Manomana ny fotodrafitrasa izahay
Ny lohateny dia azo antoka fa matanjaka, na izany aza, ny hany ilainao atao dia ny manoratra config kely ho an'ny docker-compose miaraka amin'ny kafka (sy zookeeper - ao anaty container iray), kafdrop (raha te hijery hafatra amin'ny lohahevitra isika), mongodb. Mahazo izahay [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
Tsy misy zavatra sarotra mihitsy eto. Mpihaino roa no nambara ho an'ny kafka: ny iray (anatiny) hampiasaina ao anatin'ny tambajotra mitambatra, ary ny faharoa (ivelany) ho an'ny fangatahana avy any ivelany, ka nampita izany tany ivelany. 2181 - seranan-tsambo zookeeper. Ny ambiny, heveriko, mazava.
Fanomanana ny taolan'ny tetikasa
Amin'ny dikan-teny fototra, ny firafitry ny tetikasantsika dia tokony ho toy izao:
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 *
*Izay rehetra nomarihiko Mbola tsy kitihinay fa mamorona rakitra poakaty fotsiny.**
Namorona rafitra izahay. Andeha isika hanampy ny miankina ilaina, soraty ny config ary mifandray amin'ny mongodb. Tsy hanome ny lahatsoratra feno amin'ny rakitra ao amin'ny lahatsoratra aho, mba tsy hanemotra izany, fa hanome rohy mankany amin'ireo dikan-teny ilaina aho.
Andao hanomboka amin'ny fiankinan-doha sy meta momba ny tetikasa -
Manaraka, manomboka mametraka fiankinan-doha isika ary mamorona virtualenv (na azonao atao ny mamorona ny lahatahiry venv anao ary manetsika ny tontolo iainana):
pip3 install poetry (если ещё не установлено)
poetry install
Andeha isika hamorona
Rehefa mifandray amin'ny Mongo dia tsotra ny zava-drehetra. nanambara
Inona no hitranga manaraka?
Tsy dia lava loatra ilay lahatsoratra, satria ny antony manosika sy ny fiomanana ihany no resahiko eto, koa aza omena tsiny aho - Mampanantena aho fa ny ampahany manaraka dia hisy hetsika sy sary.
Noho izany, amin'ity ampahany manaraka ity isika:
- Andao hanoratra mpanjifa kely ho an'ny alphavantage amin'ny aiohttp miaraka amin'ny fangatahana ireo teboka farany ilaintsika.
- Andao hamorona mpandraharaha iray izay hanangona angona momba ny antoka sy ny vidin'ny tantara ho azy ireo.
Source: www.habr.com