Mesebetsi e ka morao ho Faust, Karolo ea I: Selelekela

Mesebetsi e ka morao ho Faust, Karolo ea I: Selelekela

Ho tlile joang hore ke phele tjee?

Hase khale haholo ke ile ka tlameha ho sebetsa ka mokokotlo oa morero o tletseng haholo, oo ho oona ho neng ho hlokahala hore ho hlophisoe ts'ebetso e tloaelehileng ea mesebetsi e mengata ea morao-rao e nang le lipalo tse rarahaneng le likōpo tsa litšebeletso tsa batho ba bang. Morero ha o lumellane le pele ke tla, o ne o e-na le mokhoa o bonolo oa ho etsa mesebetsi ea ho qala cron: loop e lekola nako ea hajoale le ho qala lihlopha tsa li-coroutines ka ho bokella - mokhoa ona o ile oa amoheleha ho fihlela ho na le li-coroutines tse joalo tse makholo le tse makholo. , leha ho le joalo, ha palo ea bona e feta likete tse peli, ke ile ka tlameha ho nahana ka ho hlophisa mokoloko o tloaelehileng oa mosebetsi le broker, basebetsi ba 'maloa, joalo-joalo.

Pele ke ile ka etsa qeto ea ho leka Celery, eo ke neng ke e sebelisitse pele. Ka lebaka la sebopeho sa morero, ke ile ka itahlela ka har'a potso mme ka bona sengoloa, le morero, e entsoeng ke mongoli oa sehlooho.

Ke tla bua sena, morero ona o thahasellisa haholo 'me o sebetsa ka katleho lits'ebetsong tse ling tsa sehlopha sa rona,' me mongoli ka boeena o re o khonne ho e fetisetsa tlhahisong ka ho sebelisa letamo la asynchronous. Empa, ka bomalimabe, e ne e hlile e sa ntšoane, joalokaha ho ile ha etsahala bothata ka ho qala ka sehlopha sa mesebetsi (bona. sehlopha se). Ka nako ea ho ngola hlahisa e se e koetsoe, leha ho le joalo, mosebetsi o ntse o tsoela pele ka khoeli. Ho sa tsotellehe boemo leha e le bofe, mahlohonolo ho mongoli le bohle ba molemo ka ho fetisisa, kaha ho se ho ntse ho e-na le lintho tse sebetsang ho lib ... ka kakaretso, ntlha e ho 'na' me sesebelisoa se ile sa fetoha mongobo ho 'na. Ho phaella moo, mesebetsi e meng e ne e e-na le likopo tsa 2-3 http litšebeletsong tse fapaneng, kahoo esita le ha re ntlafatsa mesebetsi, re theha likhokahano tsa TCP tse likete tse 4, hoo e ka bang lihora tse ling le tse ling tsa 2 - ha li ntle haholo ... Ke kopa ho theha seboka sa mofuta o le mong oa mosebetsi ha o qala basebetsi. Ho feta hanyane ka palo e kholo ea likopo ka aiohttp mona.

Tabeng ena, ke ile ka qala ho batla mekhoa e meng mme a e fumana! Baetsi ba celery, ka ho khetheha, joalo ka ha ke e utloisisa Botsa Solem, ea bōptjoa Faust, qalong bakeng sa morero bosholu. Faust e bululetsoe ke Kafka Streams mme e sebetsa le Kafka e le broker, rocksdb e boetse e sebelisetsoa ho boloka liphello tse tsoang mosebetsing oa baemeli, 'me ntho ea bohlokoa ka ho fetisisa ke hore laebrari ke asynchronous.

Hape, u ka sheba papiso e potlakileng celery le faust ho tsoa ho baetsi ba ho qetela: liphapang tsa bona, phapang lipakeng tsa barekisi, ts'ebetsong ea mosebetsi oa mantlha. Ntho e 'ngoe le e' ngoe e bonolo, leha ho le joalo, tšobotsi e ntle ea faust e hohela tlhokomelo - data e thaelitsoeng bakeng sa ho fetisetsa sehlooho.

Re etsa'ng?

Kahoo, letotong le lekhuts'oane la lingoloa, ke tla u bontša mokhoa oa ho bokella data ho tsoa mesebetsing ea morao-rao u sebelisa Faust. Mohloli oa morero oa rona oa mohlala e tla ba, joalo ka ha lebitso le fana ka maikutlo, alphavantage.co. Ke tla bonts'a mokhoa oa ho ngola li-agent (sink, lihlooho, li-partitions), mokhoa oa ho etsa ts'ebetso e tloaelehileng (cron), litaelo tse bonolo ka ho fetisisa tsa faust cli (sephutheloana sa ho penya), lihlopha tse bonolo, 'me qetellong re tla hokela datadog ( ho sebetsa ka ntle ho lebokose) le ho leka ho hong ho bona. Ho boloka data e bokelletsoeng re tla sebelisa mongodb le motor ho hokahanya.

PS Ha re sheba ka kholiseho eo ntlha ea ho beha leihlo e ngotsoeng ka eona, ke nahana hore 'mali qetellong ea sengoloa sa ho qetela o ntse a tla shebahala tjena:

Mesebetsi e ka morao ho Faust, Karolo ea I: Selelekela

Litlhoko tsa morero

Ka lebaka la hore ke se ke tšepisitse, ha re etse lethathamo le lenyenyane la seo tšebeletso e lokelang ho khona ho se etsa:

  1. Kenya li-securities le kakaretso ea tsona (ho kenyeletsoa phaello le tahlehelo, leqephe la tekanyo, phallo ea chelete - bakeng sa selemo se fetileng) - khafetsa
  2. Kenya lintlha tsa nalane (bakeng sa selemo se seng le se seng sa khoebo, fumana boleng bo feteletseng ba theko e koalang ea khoebo) - khafetsa
  3. Kenya lintlha tsa morao-rao tsa khoebo - khafetsa
  4. Kenya lethathamo le ikhethileng la matšoao bakeng sa ts'ireletso ka 'ngoe - khafetsa

Joalo ka ha ho lebelletsoe, re khetha lebitso la projeke ho tloha qalong: Horton

Re ntse re lokisa meaho

Sehlooho se hlile se matla, leha ho le joalo, sohle seo u hlokang ho se etsa ke ho ngola config e nyane bakeng sa docker-compose le kafka (le zookeeper - ka setshelo se le seng), kafdrop (haeba re batla ho sheba melaetsa ka lihlooho), mongodb. Rea fumana [docker-compose.yml](https://github.com/Egnod/horton/blob/562fa5ec14df952cd74760acf76e141707d2ef58/docker-compose.yml) ka foromo e latelang:

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

Ha ho letho le rarahaneng mona ho hang. Ho ile ha phatlalatsoa bamameli ba babeli bakeng sa kafka: e le 'ngoe (ea ka hare) bakeng sa ho sebelisoa ka har'a marang-rang a kopantsoeng, le ea bobeli (ea ka ntle) bakeng sa likōpo tse tsoang ka ntle, kahoo ba e fetisetsa ka ntle. 2181 - boema-kepe ba polokelo ea liphoofolo. Tse ling kaofela, ke nahana, li hlakile.

Ho lokisa skeleton ea morero

Ka mofuta oa mantlha, sebopeho sa projeke ea rona se lokela ho shebahala tjena:

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 *

*Tsohle tseo ke li hlokometseng Ha re so e ame, re etsa feela lifaele tse se nang letho.**

Re thehile sebopeho. Joale ha re kenyelleng litšepeho tse hlokahalang, ngola config mme o hokela mongodb. Nke ke ka fana ka litemana tse feletseng tsa lifaele tse sehloohong sena, e le hore ke se ke ka liehisa, empa ke tla fana ka li-link tsa liphetolelo tse hlokahalang.

Ha re qale ka ho itšetleha le meta mabapi le morero - pyproject.toml

Ka mor'a moo, re qala ho kenya litšepe le ho theha virtualenv (kapa u ka iketsetsa foldara ea venv 'me ua kenya tšebetsong tikoloho):

pip3 install poetry (если ещё не установлено)
poetry install

Joale ha re theheng config.yml - Lintlha le moo u ka kokotang teng. U ka beha hang-hang data bakeng sa alphavantage moo. Hantle, ha re tsoeleng pele config.py - ntša lintlha tsa ts'ebeliso ho config. Ee, kea ipolela, ke sebelisitse lib tsa ka - sitri.

Ha o hokela Mongo, tsohle li bonolo haholo. phatlalatsoa sehlopha sa bareki ho hokela le sehlopha sa motheo bakeng sa cruds, ho etsa hore ho be bonolo ho botsa ka likoleke.

Ho tla latela eng?

Sengoliloeng ha se nako e telele haholo, kaha mona ke bua feela ka khothatso le boitokisetso, kahoo u se ke ua mpea molato - ke tšepisa hore karolo e latelang e tla ba le liketso le litšoantšo.

Kahoo, karolong ena e latelang re:

  1. Ha re ngoleng moreki e monyane bakeng sa alphavantage ho aiohttp ka likopo tsa liphetho tseo re li hlokang.
  2. Ha re theheng moemeli ea tla bokella lintlha tsa matšeliso le litheko tsa nalane bakeng sa bona.

Khoutu ea morero

Khoutu bakeng sa karolo ena

Source: www.habr.com

Eketsa ka tlhaloso