Kif sirt ngħix hekk?
Ftit ilu kelli naħdem fuq il-backend ta 'proġett mgħobbi ħafna, li fih kien meħtieġ li torganizza l-eżekuzzjoni regolari ta' numru kbir ta 'kompiti fl-isfond b'kalkoli kumplessi u talbiet għal servizzi ta' partijiet terzi. Il-proġett huwa asinkroniku u qabel ma ġejt, kellu mekkaniżmu sempliċi għal ħidmiet ta' tnedija ta' cron: loop li jiċċekkja l-ħin attwali u tniedi gruppi ta' coroutines permezz ta' gather - dan l-approċċ irriżulta li kien aċċettabbli sakemm kien hemm għexieren u mijiet ta' tali coroutines. , madankollu, meta n-numru tagħhom qabeż l-elfejn, kelli naħseb biex norganizza kju ta 'kompiti normali ma' sensar, diversi ħaddiema, eċċ.
L-ewwel iddeċidejt li nipprova Karfus, li kont użajt qabel. Minħabba n-natura asinkronika tal-proġett, għaddejt fil-mistoqsija u rajt
Se ngħid dan, il-proġett huwa interessanti ħafna u jaħdem pjuttost b'suċċess f'applikazzjonijiet oħra tat-tim tagħna, u l-awtur innifsu jgħid li kien kapaċi jdaħħalha fil-produzzjoni billi juża pool asinkroniku. Iżda, sfortunatament, ma tantx jaqbel lili, kif irriżulta
F'dan ir-rigward, bdejt infittex alternattivi u sabha! Il-ħallieqa tal-karfus, speċifikament, kif nifhem jien
Ukoll, tista 'tfittex
X'nagħmlu?
Allura, f'serje qasira ta 'artikoli, ser nuruk kif tiġbor data minn kompiti fl-isfond bl-użu ta' Faust. Is-sors għall-proġett eżempju tagħna se jkun, kif jissuġġerixxi l-isem,
PS Meta wieħed jiġġudika mill-kunfidenza li biha nkiteb il-punt dwar il-monitoraġġ, naħseb li l-qarrej fl-aħħar tal-aħħar artiklu xorta se jidher xi ħaġa bħal din:
Rekwiżiti tal-proġett
Minħabba l-fatt li diġà wiegħed, ejja nagħmlu lista żgħira ta 'dak li s-servizz għandu jkun kapaċi jagħmel:
- Ittella' titoli u ħarsa ġenerali tagħhom (inklużi profitti u telf, karta tal-bilanċ, likwidità - għall-aħħar sena) - regolarment
- Ittella 'dejta storika (għal kull sena ta' kummerċ, sib valuri estremi tal-prezz tal-għeluq tal-kummerċ) - regolarment
- Ittella' l-aħħar data tal-kummerċ - regolarment
- Ittella' lista personalizzata ta' indikaturi għal kull sigurtà - regolarment
Kif mistenni, aħna nagħżlu isem għall-proġett mill-bidu nett: Horton
Qed nippreparaw l-infrastruttura
It-titlu huwa ċertament b'saħħtu, madankollu, kull ma trid tagħmel hu li tikteb konfigurazzjoni żgħira għal docker-compose b'kafka (u zookeeper - f'kontenitur wieħed), kafdrop (jekk irridu nħarsu lejn messaġġi f'suġġetti), mongodb. Ikollna [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
M'hemm xejn ikkumplikat hawn. Żewġ semmiegħa ġew iddikjarati għall-kafka: wieħed (intern) għall-użu ġewwa n-netwerk kompost, u t-tieni (estern) għal talbiet minn barra, u għalhekk bagħtuh barra. 2181 — port taż-zookeeper. Il-bqija, naħseb, huwa ċar.
Tħejjija tal-iskeletru tal-proġett
Fil-verżjoni bażika, l-istruttura tal-proġett tagħna għandha tidher bħal din:
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 *
*Dak kollu li nnutajt Għadna ma nmissux, aħna biss noħolqu fajls vojta.**
Ħloqna struttura. Issa ejja nżidu d-dipendenzi meħtieġa, ikteb il-konfigurazzjoni u qabbad ma 'mongodb. Jien mhux se nipprovdi t-test sħiħ tal-fajls fl-artiklu, sabiex ma ndewwimx, iżda se nipprovdi links għall-verżjonijiet meħtieġa.
Nibdew bid-dipendenzi u l-meta dwar il-proġett -
Sussegwentement, nibdew ninstallaw id-dipendenzi u noħolqu virtualenv (jew tista' toħloq il-folder tal-venv lilek innifsek u tattiva l-ambjent):
pip3 install poetry (если ещё не установлено)
poetry install
Issa ejja noħolqu
Meta tikkonnettja ma 'Mongo, kollox huwa pjuttost sempliċi. imħabbra
X'se jiġri wara?
L-artiklu mhuwiex twil ħafna, peress li hawn qed nitkellem biss dwar il-motivazzjoni u l-preparazzjoni, għalhekk ma twaħħalnix - inwiegħed li l-parti li jmiss se jkollha azzjoni u grafika.
Allura, f'din il-parti li jmiss aħna:
- Ejja niktbu klijent żgħir għal alphaavantage fuq aiohttp b'talbiet għall-endpoints li għandna bżonn.
- Ejja noħolqu aġent li jiġbor data dwar it-titoli u l-prezzijiet storiċi għalihom.
Sors: www.habr.com