Giunsa nako pagkinabuhi nga ingon niini?
Dili pa lang dugay kinahanglan kong magtrabaho sa backend sa usa ka puno kaayo nga proyekto, diin gikinahanglan ang pag-organisar sa regular nga pagpatuman sa daghang mga buluhaton sa background nga adunay komplikado nga mga kalkulasyon ug mga hangyo alang sa mga serbisyo sa ikatulo nga partido. Ang proyekto asynchronous ug sa wala pa ako moabut, kini adunay usa ka yano nga mekanismo alang sa mga buluhaton sa paglansad sa cron: usa ka loop nga nagsusi sa karon nga oras ug paglansad sa mga grupo sa mga coroutine pinaagi sa pagpundok - kini nga pamaagi nahimo nga madawat hangtod adunay mga dosena ug gatusan nga mga coroutine. , Apan, sa diha nga ang ilang gidaghanon milapas sa duha ka libo, ako kinahanglan nga maghunahuna mahitungod sa pag-organisar sa usa ka normal nga buluhaton pila uban sa usa ka broker, daghang mga trabahante, ug uban pa.
Una nakahukom ko nga sulayan ang Celery, nga akong gigamit kaniadto. Tungod sa asynchronous nga kinaiya sa proyekto, akong gisusi ang pangutana ug nakita
Isulti ko kini, ang proyekto makapainteres kaayo ug malampuson nga nagtrabaho sa ubang mga aplikasyon sa among team, ug ang tagsulat mismo nag-ingon nga nahimo niya kini nga gi-roll out sa produksiyon pinaagi sa paggamit sa usa ka asynchronous pool. Apan, sa kasubo, dili gyud kini angay kanako, ingon nga kini nahimo
Niining bahina, nagsugod ako sa pagpangita mga alternatibo ug nakit-an kini! Ang mga tiglalang sa celery, ilabi na, sa akong pagsabot niini
Usab, mahimo nimong tan-awon
Unsay atong buhaton?
Mao nga, sa usa ka mubo nga serye sa mga artikulo, ipakita ko kanimo kung giunsa ang pagkolekta sa datos gikan sa mga buluhaton sa background gamit ang Faust. Ang tinubdan alang sa among panig-ingnan nga proyekto mao ang, ingon sa gisugyot sa ngalan,
PS Sa paghukom sa pagsalig nga gisulat ang punto bahin sa pag-monitor, sa akong hunahuna ang magbabasa sa katapusan sa katapusan nga artikulo motan-aw gihapon sama niini:
Mga kinahanglanon sa proyekto
Tungod sa kamatuoran nga nakasaad na ako, maghimo kita og gamay nga lista kung unsa ang mahimo sa serbisyo:
- Pag-upload sa mga securities ug usa ka kinatibuk-ang pagtan-aw niini (lakip ang kita ug pagkawala, balanse, cash flow - sa miaging tuig) - kanunay
- Pag-upload sa makasaysayan nga datos (alang sa matag tuig sa pamatigayon, pangitaa ang grabe nga mga kantidad sa panapos nga presyo sa pamatigayon) - kanunay
- Pag-upload sa pinakabag-o nga datos sa pamatigayon - kanunay
- Pag-upload og usa ka customized nga listahan sa mga indicators alang sa matag seguridad - kanunay
Sama sa gipaabut, nagpili kami usa ka ngalan alang sa proyekto gikan sa sinugdan: Horton
Nag-andam kami sa imprastraktura
Kusog gyud ang titulo, bisan pa, ang kinahanglan nimong buhaton mao ang pagsulat usa ka gamay nga config para sa docker-compose nga adunay kafka (ug zookeeper - sa usa ka sulud), kafdrop (kung gusto namon tan-awon ang mga mensahe sa mga hilisgutan), mongodb. Atong makuha [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
Walay bisan unsa nga komplikado dinhi sa tanan. Duha ka tigpaminaw ang gideklarar alang sa kafka: ang usa (internal) alang sa paggamit sa sulod sa composite network, ug ang ikaduha (external) alang sa mga hangyo gikan sa gawas, mao nga ilang gipasa kini sa gawas. 2181 — pantalan sa zookeeper. Ang uban, sa akong hunahuna, klaro.
Pag-andam sa kalabera sa proyekto
Sa sukaranan nga bersyon, ang istruktura sa among proyekto kinahanglan nga ingon niini:
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 *
*Tanan nga akong namatikdan Wala pa namo kini hilabti, nagmugna lang kami og mga walay sulod nga mga file.**
Naghimo kami usa ka istruktura. Karon atong idugang ang gikinahanglan nga mga dependency, isulat ang config ug ikonektar sa mongodb. Dili nako ihatag ang tibuuk nga teksto sa mga file sa artikulo, aron dili kini malangan, apan maghatag ako mga link sa kinahanglan nga mga bersyon.
Magsugod kita sa mga dependency ug meta bahin sa proyekto -
Sunod, magsugod kami sa pag-install sa mga dependency ug paghimo og virtualenv (o mahimo nimong buhaton ang venv folder sa imong kaugalingon ug i-aktibo ang palibot):
pip3 install poetry (если ещё не установлено)
poetry install
Karon maghimo kita
Kung nagkonektar sa Mongo, ang tanan yano ra. gipahibalo
Unsay sunod nga mahitabo?
Ang artikulo dili kaayo taas, tungod kay dinhi ako naghisgot lamang bahin sa pagdasig ug pagpangandam, busa ayaw ako pagbasol - Gisaad ko nga ang sunod nga bahin adunay aksyon ug mga graphic.
Busa, niining sunod nga bahin atong:
- Atong isulat ang usa ka gamay nga kliyente alang sa alphavantage sa aiohttp nga adunay mga hangyo alang sa mga endpoint nga atong gikinahanglan.
- Maghimo kita usa ka ahente nga mangolekta mga datos sa mga securities ug mga presyo sa kasaysayan alang kanila.
Source: www.habr.com