Ko ndakazorarama sei zvakadai?
Munguva pfupi yapfuura ndaifanira kushanda kumashure kwepurojekiti yakaremerwa, umo zvaive zvakafanira kuronga nguva dzose kuitwa kwenhamba yakawanda yemabasa ekumashure nekuverenga kwakaoma uye zvikumbiro zvebasa rechitatu. Iyo purojekiti ndeye asynchronous uye ndisati ndauya, yaive neyakapusa nzira yekutangisa-cron-mabasa: loop yekutarisa nguva iripo uye kuvhura mapoka emakoroti kuburikidza nekuungana - nzira iyi yakave inogamuchirwa kusvika paine gumi nemaviri nemazana emakoroti akadaro. , zvisinei, apo nhamba yavo yakapfuura zviuru zviviri, ndaifanira kufunga nezve kuronga mutsara webasa wenguva dzose nebhuroka, vashandi vakati wandei, zvichingodaro.
Kutanga ndakasarudza kuedza Celery, yandakanga ndamboshandisa. Nekuda kweasynchronous chimiro cheprojekiti, ndakanyura mumubvunzo ndikaona
Ini ndichataura izvi, chirongwa ichi chinonakidza uye chinoshanda zvakabudirira mune mamwe maapplication echikwata chedu, uye munyori pachake anoti akakwanisa kuiburitsa mukugadzira nekushandisa asynchronous dziva. Asi, zvinosuruvarisa, hazvina kunyatsondikodzera, sezvazvakazoitika
Panyaya iyi, ndakatanga kutarisa dzimwe nzira ndokuiwana! Vagadziri vecelery, kunyanya, sezvandinozvinzwisisa
Uyezve, unogona kutarisa
Tinoita sei?
Saka, mune pfupi pfupi yezvinyorwa, ini ndinokuratidza nzira yekuunganidza data kubva kumashure mabasa uchishandisa Faust. Mhedzisiro yeprojekiti yedu yemuenzaniso ichave, sekureva kunoita zita,
PS Tichifunga nekuvimba kwakanyorwa pfungwa yekutarisa, ndinofunga kuti muverengi pakupera kwechinyorwa chekupedzisira acharamba achitaridzika seizvi:
Project zvinodiwa
Nekuda kwekuti ini ndakatovimbisa, ngatiite runyoro rudiki rwezvinofanira kuitwa nesevhisi:
- Isa zvibatiso uye mucherechedzo wazvo (kusanganisira purofiti uye kurasikirwa, chiyero chemari, kubuda kwemari - kwegore rapfuura) - nguva dzose
- Isa nhoroondo yedata (yega rega rekutengesa gore, tsvaga yakanyanyisa kukosha yemutengo wekuvhara wekutengesa) - nguva dzose
- Isa data razvino rekutengesa - nguva nenguva
- Isa rondedzero yakagadziridzwa yezviratidzo kune yega yega chengetedzo - nguva dzose
Sezvinotarisirwa, tinosarudza zita repurojekiti kubva pakutanga: Horton
Tiri kugadzirira zvivakwa
Musoro wacho wakasimba, zvisinei, zvese zvaunofanirwa kuita kunyora diki config ye docker-compose ne kafka (uye zookeeper - mumudziyo mumwe), kafdrop (kana tichida kutarisa mameseji mumisoro), mongodb. Tinowana [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
Hapana chakaoma apa zvachose. Vateereri vaviri vakaziviswa kafka: imwe (yemukati) yekushandisa mukati metiweki inoumbwa, uye yechipiri (yekunze) yezvikumbiro kubva kunze, saka vakaitumira kunze. 2181 - zookeeper port. Zvimwe, ndinofunga, zvakajeka.
Kugadzirira skeleton yeprojekti
Mune iyo yekutanga vhezheni, chimiro chepurojekiti yedu chinofanira kutaridzika seizvi:
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 *
*Zvese zvandakaona Hatisati tazvibata, tinongogadzira mafaira asina chinhu.**
Isu takagadzira chimiro. Zvino ngatiwedzerei zvinodiwa zvinoenderana, nyora iyo config uye ubatanidze kune mongodb. Ini handisi kuzopa iwo mameseji akazara emafaira ari muchinyorwa, kuti urege kunonoka, asi ini ndichapa zvinongedzo kune dzinodiwa shanduro.
Ngatitangei nekutsamira uye meta nezve purojekiti -
Tevere, tinotanga kuisa zvinotsamira uye kugadzira virtualenv (kana iwe unogona kugadzira iyo venv dhairekitori pachako uye kumisa nharaunda):
pip3 install poetry (если ещё не установлено)
poetry install
Zvino ngatigadzirirei
Kana uchibatanidza kuMongo, zvese zviri nyore. zvakaziviswa
Chii chichatevera kuitika?
Chinyorwa chacho hachina kureba, sezvo pano ndiri kungotaura nezvekukurudzira uye kugadzirira, saka usandipe mhosva - ndinovimbisa kuti chikamu chinotevera chichava nekuita uye magirafu.
Saka, mune ino chikamu chinotevera isu:
- Ngatinyorei mutengi mudiki kune alphavantage paaiohttp nezvikumbiro zvemagumo atinoda.
- Ngatigadzirei mumiririri anozounganidza data pamusoro pezvivimbiso nemitengo yenhoroondo yavo.
Source: www.habr.com