Kumaha kuring bisa hirup kawas kieu?
Teu lami pisan kuring kedah damel di backend tina proyék anu sarat pisan, dimana anjeun kedah ngatur palaksanaan rutin sajumlah ageung tugas latar kalayan itungan rumit sareng pamundut pikeun jasa pihak katilu. Proyék éta henteu sinkron sareng sateuacan kuring sumping, éta ngagaduhan mékanisme saderhana pikeun tugas cron-launching: loop mariksa waktos ayeuna sareng ngaluncurkeun grup coroutines via gathering - pendekatan ieu tétéla tiasa ditarima dugi ka aya puluhan sareng ratusan coroutines sapertos kitu. , kumaha oge, lamun jumlah maranéhanana ngaleuwihan dua rébu, Kuring kungsi mikir ngeunaan pangatur antrian tugas normal jeung calo a, sababaraha pagawe, jeung saterusna.
Mimiti kuring mutuskeun pikeun nyobaan Seledri, anu kuring kantos dianggo sateuacanna. Alatan sipat Asynchronous proyék, abdi dived kana patarosan tur nempo
Kuring bakal nyebutkeun ieu, proyék nu pisan metot sarta jalan rada suksés di aplikasi sejenna tim kami, sarta panulis sorangan nyebutkeun yen anjeunna bisa gulung kaluar kana produksi ku ngagunakeun hiji kolam renang Asynchronous. Tapi, hanjakalna, éta teu bener cocog kuring, sakumaha tétéla
Dina hal ieu, kuring mimiti pilari alternatif sarta kapanggih eta! Pencipta seledri, husus, sakumaha Abdi ngartos eta
Ogé, anjeun tiasa ningali
Naon anu urang laksanakeun?
Janten, dina séri tulisan anu pondok, kuring bakal nunjukkeun anjeun kumaha cara ngumpulkeun data tina tugas latar nganggo Faust. Sumber pikeun conto proyék urang bakal, sakumaha ngaranna nunjukkeun,
PS Ditilik ku kapercayaan anu mana titik ngeunaan monitoring ieu ditulis, Jigana nu maca dina ahir artikel panungtungan masih bakal kasampak kawas kieu:
Sarat proyék
Kusabab kanyataan yén kuring parantos jangji, hayu urang ngadamel daptar leutik naon anu kedah dilakukeun ku jasa:
- Unggah sekuritas sareng tinjauan aranjeunna (kalebet kauntungan sareng karugian, neraca, aliran kas - kanggo taun ka tukang) - rutin
- Unggah data sajarah (pikeun unggal taun dagang, panggihan nilai ekstrim tina harga nutup dagang) - rutin
- Unggah data dagang panganyarna - rutin
- Unggah daptar indikator khusus pikeun tiap kaamanan - rutin
Saperti nu diharapkeun, urang milih ngaran pikeun proyék ti scratch: Horton
Kami nyiapkeun infrastruktur
Judulna pasti kuat, kumaha oge, sadaya anu anjeun kedah laksanakeun nyaéta nyerat config leutik pikeun docker-compose sareng kafka (sareng zookeeper - dina hiji wadah), kafdrop (upami urang hoyong ningali pesen dina topik), mongodb. Urang meunang [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
Aya nanaon pajeulit di dieu pisan. Dua listeners dinyatakeun pikeun kafka: hiji (internal) pikeun pamakéan di jero jaringan komposit, sarta kadua (éksternal) pikeun requests ti luar, ngarah diteruskeun kaluar. 2181 - palabuhan zookeeper. Sésana, kuring pikir, jelas.
Nyiapkeun kerangka proyék
Dina versi dasar, struktur proyék urang kedah sapertos kieu:
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 *
*Sagalana kuring nyatet Kami henteu acan ngarampa, ngan ukur nyiptakeun file kosong.**
Kami nyiptakeun struktur. Ayeuna hayu urang tambahkeun kabebasan anu diperyogikeun, nyerat config sareng sambungkeun ka mongodb. Kuring moal nyadiakeun téks lengkep file dina artikel, ku kituna teu reureuh eta, tapi kuring baris nyadiakeun Tumbu ka versi perlu.
Hayu urang mimitian ku dependensi sareng meta ngeunaan proyék -
Salajengna, urang mimitian masang dependensi sareng nyiptakeun virtualenv (atanapi anjeun tiasa nyiptakeun folder venv nyalira sareng ngaktipkeun lingkunganana):
pip3 install poetry (если ещё не установлено)
poetry install
Ayeuna hayu urang nyieun
Nalika nyambung ka Mongo, sadayana saderhana. ngumumkeun
Naon anu bakal kajadian salajengna?
Tulisan éta henteu panjang, sabab di dieu kuring ngan ukur nyarioskeun ngeunaan motivasi sareng persiapan, janten entong nyalahkeun kuring - kuring janji yén bagian salajengna bakal gaduh aksi sareng grafik.
Janten, dina bagian salajengna ieu urang:
- Hayu urang nulis hiji klien leutik keur alphavantage on aiohttp kalawan requests pikeun titiktungtung kami butuh.
- Hayu urang ngadamel agén anu bakal ngumpulkeun data ngeunaan jaminan sareng harga sajarah pikeun aranjeunna.
sumber: www.habr.com