Sideen ku imid inaan sidan u noolaado?
Muddo aan dheerayn ka hor waa inaan ka shaqeeyo dhabarka mashruuc aad loo raray, kaas oo ay lagama maarmaan ahayd in la abaabulo fulinta joogtada ah ee tiro badan oo hawlo asal ah oo leh xisaabo adag iyo codsiyo adeegyo dhinac saddexaad ah. Mashruucu waa mid isku mid ah oo ka hor intaanan imid, waxay lahayd habab fudud oo loogu talagalay hawlaha soo-bandhigista: loop hubinta waqtiga hadda jira iyo bilaabista kooxaha coroutines iyada oo loo marayo ururinta - habkani wuxuu noqday mid la aqbali karo ilaa ay jiraan daraasiin iyo boqolaal sida coroutines. , si kastaba ha ahaatee, markii ay tiradoodu kor u dhaaftay laba kun, waxaan ku qasbanaaday in aan ka fekero abaabulka safka shaqada caadiga ah oo leh dilaal, shaqaale badan, iyo wixii la mid ah.
Marka hore waxaan go'aansaday inaan tijaabiyo Celery, oo aan horay u isticmaalay. Dabeecadda is-maandhaafka ah ee mashruuca awgeed, waxaan dhex galay su'aasha oo aan arkay
Waxaan dhihi doonaa tan, mashruucu waa mid aad u xiiso badan oo si guul leh ugu shaqeeya codsiyada kale ee kooxdayada, qoraaga laftiisa ayaa sheegay in uu awooday inuu u soo saaro wax soo saarka isagoo isticmaalaya barkad asynchronous ah. Laakiin, nasiib darro, runtii iguma habboonayn, sidii ay u soo baxday
Arintan, waxaan bilaabay inaan eego beddelka oo helay! Abuurayaasha celery, gaar ahaan, sida aan u fahmay
Sidoo kale, waad eegi kartaa
Maxaan qabanaa?
Marka, maqaallo taxane ah oo gaaban, waxaan ku tusi doonaa sida loo ururiyo xogta hawlaha asalka ah adoo isticmaalaya Faust. Isha mashruuca tusaalahayagu wuxuu noqon doonaa, sida magacaba ka muuqata,
PS Marka la eego kalsoonida lagu qoray qodobka ku saabsan dabagalka, waxaan filayaa in akhristuhu dhamaadka maqaalka u dambeeya uu weli u ekaan doono sidan:
Shuruudaha mashruuca
Xaqiiqda ah in aan horay u ballan qaaday, aan samayno liis yar oo ah waxa adeeggu uu awoodo inuu sameeyo:
- Soo rar dammaanad iyo dulmar iyaga ah (ay ku jiraan faa'iidada iyo khasaaraha, xaashida baaqiga, socodka lacagta caddaanka ah - sannadkii u dambeeyay) - si joogto ah
- Soo rar xogta taariikhiga ah (sanad kasta oo ganacsi, hel qiimayaal xad dhaaf ah oo ah qiimaha xidhitaanka ganacsiga) - si joogto ah
- Soo rar xogta ganacsi ee ugu dambeysay - si joogto ah
- Soo rar liis la habeeyey ee tilmaamayaasha amni kasta - si joogto ah
Sida la filayo, waxaan magaca mashruuca ka dooranay meel eber: Horton
Waxaan diyaarineynaa kaabayaasha dhaqaalaha
Cinwaanka hubaal waa xoog badan yahay, si kastaba ha ahaatee, waxa kaliya ee aad u baahan tahay inaad sameyso waa inaad qorto qaab yar oo loogu talagalay docker-compose leh kafka (iyo zookeeper - hal weel), kafdrop (haddii aan rabno inaan eegno fariimaha mawduucyada), mongodb. Waxaan helnaa [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
Ma jiraan wax adag halkan gabi ahaanba. Laba dhegeyste ayaa lagu dhawaaqay kafka: mid (gudaha) loogu isticmaalo gudaha shabakadda isku-dhafka ah, iyo tan labaad (dibadda) codsiyada dibadda, sidaas darteed waxay u gudbiyeen dibadda. 2181 - deked zookeeper. Inta kale, waxay ila tahay, way caddahay.
Diyaarinta qalfoofka mashruuca
Nooca aasaasiga ah, qaab dhismeedka mashruucayagu waa inuu u ekaado sidan:
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 *
*Wax kasta oo aan xusay Wali ma taaban, kaliya waxaan abuurnaa faylal madhan.**
Waxaan abuurnay qaab dhismeed. Hadda aan ku darno ku-tiirsanaanta lagama maarmaanka ah, qor config oo ku xidho mongodb. Ma bixin doono qoraalka buuxa ee faylasha ku jira maqaalka, si aan dib loo dhigin, laakiin waxaan ku siin doonaa xiriirinta noocyada lagama maarmaanka ah.
Aan ku bilowno ku tiirsanaanta iyo xogta ku saabsan mashruuca -
Marka xigta, waxaan bilaabeynaa rakibidda ku-tiirsanaanta oo aan abuurno virtualenv (ama waxaad adigu abuuri kartaa galka venv oo aad dhaqaajiso deegaanka):
pip3 install poetry (если ещё не установлено)
poetry install
Hadda aynu abuurno
Markaad ku xidhidhiyaha Mongo, wax walbaa waa iska fudud yihiin. lagu dhawaaqay
Maxaa xigi doona?
Maqaalku maaha mid aad u dheer, tan iyo halkan waxaan ka hadlayaa oo kaliya dhiirigelinta iyo diyaarinta, markaa ha i eedeyn - waxaan ballan qaadayaa in qaybta xigta ay yeelan doonto ficil iyo sawirro.
Haddaba, qaybtan dambe waxaynu:
- Aynu ku qorno macmiil yar oo alfavantage ah aiohttp oo ay ku jiraan codsiyada dhamaadka-dhamaadka ee aan u baahanahay.
- Aan abuurno wakiil ururin doona xogta dammaanadaha iyo qiimaha taariikhiga ah iyaga.
Source: www.habr.com