මට මෙහෙම ජීවත් වෙන්න ආවේ කොහොමද?
බොහෝ කලකට පෙර මට අධික ලෙස පටවන ලද ව්යාපෘතියක පසුබිම මත වැඩ කිරීමට සිදු වූ අතර, එහි සංකීර්ණ ගණනය කිරීම් සහ තෙවන පාර්ශවීය සේවාවන් සඳහා වන ඉල්ලීම් සමඟ පසුබිම් කාර්යයන් විශාල සංඛ්යාවක් නිතිපතා ක්රියාත්මක කිරීම සංවිධානය කිරීම අවශ්ය විය. ව්යාපෘතිය අසමමුහුර්ත වන අතර මා පැමිණීමට පෙර එහි ක්රෝන් දියත් කිරීමේ කාර්යයන් සඳහා සරල යාන්ත්රණයක් තිබුණි: වත්මන් වේලාව පරීක්ෂා කිරීම සහ එකතු කිරීම හරහා coroutines කණ්ඩායම් දියත් කිරීම ලූපයක් - එවැනි coroutines දුසිම් ගණනක් සහ සිය ගණනක් සිටින තෙක් මෙම ප්රවේශය පිළිගත හැකි විය. , කෙසේ වෙතත්, ඔවුන්ගේ සංඛ්යාව දෙදහස ඉක්මවා ගිය විට, තැරැව්කරුවකු, කම්කරුවන් කිහිප දෙනෙකු සමඟ සාමාන්ය කාර්ය පෝලිමක් සංවිධානය කිරීම ගැන සිතා බැලීමට සිදු විය.
මුලින්ම මම කලින් භාවිතා කළ සැල්දිරි අත්හදා බැලීමට තීරණය කළා. ව්යාපෘතියේ අසමමුහුර්ත ස්වභාවය නිසා මම ප්රශ්නයට කිමිදී බැලුවෙමි
මම මෙය කියමි, ව්යාපෘතිය ඉතා සිත්ගන්නාසුළු වන අතර අපගේ කණ්ඩායමේ අනෙකුත් යෙදුම්වල තරමක් සාර්ථකව ක්රියා කරන අතර කතුවරයාම පවසන්නේ අසමමුහුර්ත සංචිතයක් භාවිතා කිරීමෙන් එය නිෂ්පාදනයට පෙරළීමට ඔහුට හැකි වූ බවයි. එහෙත්, අවාසනාවකට මෙන්, එය මට ගැලපෙන්නේ නැත
මේ සම්බන්ධයෙන්, මම සොයා බැලීමට පටන් ගත්තා විකල්ප සහ එය සොයා ගත්තා! සැල්දිරි වල නිර්මාතෘවරුන්, විශේෂයෙන්, මම තේරුම් ගත් පරිදි
එසේම, ඔබට බැලිය හැකිය
අපි මොකද කරන්නේ?
ඉතින්, කෙටි ලිපි මාලාවකින්, Faust භාවිතා කර පසුබිම් කාර්යයන් වලින් දත්ත එකතු කරන ආකාරය මම ඔබට පෙන්වන්නම්. අපගේ උදාහරණ ව්යාපෘතිය සඳහා මූලාශ්රය වනුයේ, නමට අනුව,
PS අධීක්ෂණය පිළිබඳ කාරණය ලියා ඇති විශ්වාසය අනුව විනිශ්චය කිරීම, පසුගිය ලිපියේ අවසානයේ පාඨකයා තවමත් මේ වගේ දෙයක් පෙනෙනු ඇතැයි මම සිතමි:
ව්යාපෘති අවශ්යතා
මම දැනටමත් පොරොන්දු වී ඇති නිසා, සේවාවට කළ හැකි දේ පිළිබඳ කුඩා ලැයිස්තුවක් සාදන්න:
- සුරැකුම්පත් උඩුගත කිරීම සහ ඒවා පිළිබඳ දළ විශ්ලේෂණයක් (ලාභ හා අලාභ, ශේෂ පත්රය, මුදල් ප්රවාහය - පසුගිය වසර සඳහා) - නිතිපතා
- ඓතිහාසික දත්ත උඩුගත කරන්න (එක් එක් වෙළඳ වසර සඳහා, වෙළඳාමේ අවසාන මිලෙහි ආන්තික අගයන් සොයා ගන්න) - නිතිපතා
- නවතම වෙළඳ දත්ත උඩුගත කරන්න - නිතිපතා
- එක් එක් ආරක්ෂාව සඳහා අභිරුචි කළ දර්ශක ලැයිස්තුවක් උඩුගත කරන්න - නිතිපතා
අපේක්ෂා කළ පරිදි, අපි මුල සිට ව්යාපෘතිය සඳහා නමක් තෝරා ගනිමු: හෝටන්
අපි යටිතල පහසුකම් සකස් කරනවා
මාතෘකාව නිසැකවම ශක්තිමත් ය, කෙසේ වෙතත්, ඔබ කළ යුත්තේ kafka (සහ zookeeper - එක භාජනයක), kafdrop (අපට මාතෘකා වල පණිවිඩ බැලීමට අවශ්ය නම්), mongodb සමඟ docker-compose සඳහා කුඩා වින්යාසයක් ලිවීමයි. අපිට ලැබෙනවා [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
මෙහි කිසිසේත්ම සංකීර්ණ කිසිවක් නොමැත. කෆ්කා සඳහා සවන්දෙන්නන් දෙදෙනෙකු ප්රකාශ කරන ලදී: එකක් (අභ්යන්තර) සංයුක්ත ජාලය තුළ භාවිතා කිරීම සඳහා සහ දෙවැන්න (බාහිර) පිටතින් ඉල්ලීම් සඳහා, එබැවින් ඔවුන් එය පිටතට යොමු කරන ලදී. 2181 - සත්වෝද්යාන පාලක වරාය. ඉතිරිය, මම හිතන්නේ, පැහැදිලියි.
ව්යාපෘතියේ ඇටසැකිල්ල සකස් කිරීම
මූලික අනුවාදයේ, අපගේ ව්යාපෘතියේ ව්යුහය මේ ආකාරයට විය යුතුය:
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 *
*මම සටහන් කළ සියල්ල අපි තවම එය ස්පර්ශ නොකරමු, අපි හිස් ගොනු සාදන්නෙමු.**
අපි ව්යුහයක් නිර්මාණය කළා. දැන් අපි අවශ්ය පරායත්තතා එකතු කර config එක ලියා mongodb වෙත සම්බන්ධ කරමු. ලිපියේ ලිපිගොනු වල සම්පූර්ණ පාඨය මම ලබා නොදෙනු ඇත, එය ප්රමාද නොකිරීමට, නමුත් මම අවශ්ය අනුවාද සඳහා සබැඳි ලබා දෙන්නෙමි.
ව්යාපෘතිය පිළිබඳ පරායත්තතා සහ මෙටා සමඟ ආරම්භ කරමු -
මීළඟට, අපි පරායත්තයන් ස්ථාපනය කිරීම සහ virtualenv නිර්මාණය කිරීම ආරම්භ කරමු (නැතහොත් ඔබට venv ෆෝල්ඩරය ඔබම සාදා පරිසරය සක්රිය කළ හැක):
pip3 install poetry (если ещё не установлено)
poetry install
දැන් අපි නිර්මාණය කරමු
Mongo වෙත සම්බන්ධ වන විට, සියල්ල තරමක් සරල ය. නිවේදනය කළේය
ඊළඟට කුමක් සිදුවේද?
ලිපිය ඉතා දිගු නොවේ, මන්ද මෙහි මම කතා කරන්නේ අභිප්රේරණය සහ සූදානම ගැන පමණි, එබැවින් මට දොස් නොකියන්න - ඊළඟ කොටසේ ක්රියාව සහ ග්රැෆික්ස් ඇති බවට මම පොරොන්දු වෙමි.
ඉතින්, මෙම ඊළඟ කොටසේදී අපි:
- අපට අවශ්ය අන්ත ලක්ෂ්ය සඳහා ඉල්ලීම් සමඟ aiohttp හි alphavantage සඳහා කුඩා සේවාලාභියෙකු ලියමු.
- සුරැකුම්පත් සහ ඒවා සඳහා ඓතිහාසික මිල ගණන් පිළිබඳ දත්ත රැස් කරන නියෝජිතයෙකු නිර්මාණය කරමු.
මූලාශ්රය: www.habr.com