நான் எப்படி இப்படி வாழ வந்தேன்?
நீண்ட காலத்திற்கு முன்பு நான் மிகவும் ஏற்றப்பட்ட திட்டத்தின் பின்தளத்தில் வேலை செய்ய வேண்டியிருந்தது, இதில் சிக்கலான கணக்கீடுகள் மற்றும் மூன்றாம் தரப்பு சேவைகளுக்கான கோரிக்கைகளுடன் அதிக எண்ணிக்கையிலான பின்னணி பணிகளை வழக்கமான முறையில் செயல்படுத்துவது அவசியம். இந்த திட்டம் ஒத்திசைவற்றது மற்றும் நான் வருவதற்கு முன்பு, கிரான்-லான்சிங் பணிகளுக்கான எளிய வழிமுறையை இது கொண்டிருந்தது: தற்போதைய நேரத்தைச் சரிபார்த்து, சேகரிப்பு மூலம் கரோட்டின்களின் குழுக்களைத் தொடங்கும் ஒரு வளையம் - டஜன் கணக்கான மற்றும் இதுபோன்ற நூற்றுக்கணக்கான கரோட்டின்கள் இருக்கும் வரை இந்த அணுகுமுறை ஏற்றுக்கொள்ளத்தக்கதாக மாறியது. இருப்பினும், அவர்களின் எண்ணிக்கை இரண்டாயிரத்தைத் தாண்டியபோது, ஒரு தரகர், பல தொழிலாளர்கள் மற்றும் பலருடன் ஒரு சாதாரண பணி வரிசையை ஏற்பாடு செய்வது பற்றி நான் சிந்திக்க வேண்டியிருந்தது.
முதலில் நான் முன்பு பயன்படுத்திய செலரியை முயற்சிக்க முடிவு செய்தேன். திட்டத்தின் ஒத்திசைவற்ற தன்மை காரணமாக, நான் கேள்வியில் மூழ்கி பார்த்தேன்
நான் இதைச் சொல்வேன், இந்த திட்டம் மிகவும் சுவாரஸ்யமானது மற்றும் எங்கள் குழுவின் பிற பயன்பாடுகளில் மிகவும் வெற்றிகரமாக செயல்படுகிறது, மேலும் ஒரு ஒத்திசைவற்ற குளத்தைப் பயன்படுத்தி அதை உற்பத்தியில் உருட்ட முடிந்தது என்று ஆசிரியரே கூறுகிறார். ஆனால், துரதிர்ஷ்டவசமாக, அது எனக்குப் பொருந்தவில்லை, அது மாறியது
இது சம்பந்தமாக, நான் தேட ஆரம்பித்தேன் மாற்று மற்றும் அதை கண்டுபிடித்தேன்! செலரியை உருவாக்கியவர்கள், குறிப்பாக, நான் புரிந்துகொண்டபடி
மேலும், நீங்கள் பார்க்கலாம்
நாம் என்ன செய்ய வேண்டும்?
எனவே, ஒரு குறுகிய கட்டுரைத் தொடரில், ஃபாஸ்டைப் பயன்படுத்தி பின்னணி பணிகளிலிருந்து தரவை எவ்வாறு சேகரிப்பது என்பதை நான் உங்களுக்குக் காண்பிப்பேன். எங்கள் உதாரணத் திட்டத்திற்கான ஆதாரம், பெயர் குறிப்பிடுவது போல,
PS கண்காணிப்பு பற்றிய புள்ளி எழுதப்பட்ட நம்பிக்கையின் மூலம் ஆராயும்போது, கடந்த கட்டுரையின் முடிவில் வாசகர் இன்னும் இப்படித்தான் இருப்பார் என்று நினைக்கிறேன்:
திட்ட தேவைகள்
நான் ஏற்கனவே உறுதியளித்ததன் காரணமாக, சேவை என்ன செய்ய வேண்டும் என்பதற்கான சிறிய பட்டியலை உருவாக்குவோம்:
- பத்திரங்களையும் அவற்றின் மேலோட்டத்தையும் பதிவேற்றவும் (லாபம் மற்றும் இழப்புகள், இருப்புநிலை, பணப்புழக்கம் - கடந்த ஆண்டிற்கான) - தொடர்ந்து
- வரலாற்றுத் தரவைப் பதிவேற்றவும் (ஒவ்வொரு வர்த்தக ஆண்டிற்கும், வர்த்தகத்தின் இறுதி விலையின் தீவிர மதிப்புகளைக் கண்டறியவும்) - தொடர்ந்து
- சமீபத்திய வர்த்தகத் தரவைப் பதிவேற்றவும் - தொடர்ந்து
- ஒவ்வொரு பாதுகாப்பிற்கான தனிப்பயனாக்கப்பட்ட குறிகாட்டிகளின் பட்டியலைப் பதிவேற்றவும் - தொடர்ந்து
எதிர்பார்த்தபடி, புதிதாக திட்டத்திற்கான பெயரை நாங்கள் தேர்வு செய்கிறோம்: ஹார்டன்
உள்கட்டமைப்புகளை தயார் செய்து வருகிறோம்
தலைப்பு நிச்சயமாக வலுவாக உள்ளது, இருப்பினும், நீங்கள் செய்ய வேண்டியதெல்லாம், காஃப்கா (மற்றும் ஜூகீப்பர் - ஒரு கொள்கலனில்), காஃப்ட்ராப் (நாங்கள் தலைப்புகளில் உள்ள செய்திகளைப் பார்க்க விரும்பினால்), mongodb உடன் டோக்கர்-கம்போஸ் செய்வதற்கு ஒரு சிறிய கட்டமைப்பை எழுத வேண்டும். நாம் பெறுகிறோம் [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 *
*நான் குறிப்பிட்ட அனைத்தும் நாங்கள் அதை இன்னும் தொடவில்லை, வெற்று கோப்புகளை உருவாக்குகிறோம்.**
நாங்கள் ஒரு கட்டமைப்பை உருவாக்கினோம். இப்போது தேவையான சார்புகளைச் சேர்த்து, கட்டமைப்பை எழுதி mongodb உடன் இணைப்போம். கட்டுரையில் உள்ள கோப்புகளின் முழு உரையையும் நான் வழங்கமாட்டேன், அதனால் தாமதிக்க வேண்டாம், ஆனால் தேவையான பதிப்புகளுக்கான இணைப்புகளை வழங்குவேன்.
திட்டத்தைப் பற்றிய சார்புகள் மற்றும் மெட்டாவுடன் ஆரம்பிக்கலாம் -
அடுத்து, சார்புகளை நிறுவி ஒரு virtualenv ஐ உருவாக்கத் தொடங்குகிறோம் (அல்லது venv கோப்புறையை நீங்களே உருவாக்கி சூழலைச் செயல்படுத்தலாம்):
pip3 install poetry (если ещё не установлено)
poetry install
இப்போது உருவாக்குவோம்
மோங்கோவுடன் இணைக்கும்போது, எல்லாம் மிகவும் எளிமையானது. அறிவித்தார்
அடுத்து என்ன நடக்கும்?
கட்டுரை மிக நீளமாக இல்லை, ஏனெனில் இங்கே நான் உந்துதல் மற்றும் தயாரிப்பைப் பற்றி மட்டுமே பேசுகிறேன், எனவே என்னைக் குறை சொல்லாதீர்கள் - அடுத்த பகுதியில் நடவடிக்கை மற்றும் கிராபிக்ஸ் இருக்கும் என்று நான் உறுதியளிக்கிறேன்.
எனவே, இந்த அடுத்த பகுதியில் நாம்:
- நமக்குத் தேவையான இறுதிப்புள்ளிகளுக்கான கோரிக்கைகளுடன் aiohttp இல் alphavantageக்காக ஒரு சிறிய கிளையண்டை எழுதுவோம்.
- பத்திரங்கள் மற்றும் அவற்றுக்கான வரலாற்று விலைகள் பற்றிய தரவைச் சேகரிக்கும் ஒரு முகவரை உருவாக்குவோம்.
ஆதாரம்: www.habr.com