Ndenze njani ukuba ndiphile ngolu hlobo?
Kungekudala kwafuneka ndisebenze kwi-backend yeprojekthi elayishwe kakhulu, apho kwakuyimfuneko ukuququzelela ukuphunyezwa rhoqo kwenani elikhulu lemisebenzi yangasemva kunye nezibalo ezinzima kunye nezicelo zeenkonzo zomntu wesithathu. Iprojekthi i-asynchronous kwaye ngaphambi kokuba ndifike, yayinendlela elula yokwenza imisebenzi yokuqalisa i-cron: i-loop ejonga ixesha langoku kunye nokusungula amaqela e-coroutines ngokuhlanganisa- le ndlela iye yamkeleka de kwabakho ishumi elinambini kunye namakhulu ee-coroutines. , nangona kunjalo, xa inani labo lidlula amawaka amabini, kwafuneka ndicinge malunga nokulungelelanisa umgca wemisebenzi eqhelekileyo kunye nomthengisi, abasebenzi abaninzi, njalo njalo.
Okokuqala ndagqiba ekubeni ndizame iCelery, endandikhe ndayisebenzisa ngaphambili. Ngenxa yobume beprojekthi, ndiye ndangena kumbuzo ndabona
Ndiya kuthetha oku, iprojekthi inomdla kakhulu kwaye isebenza ngempumelelo kwezinye izicelo zeqela lethu, kwaye umbhali ngokwakhe uthi ukwazile ukuyikhupha kwimveliso ngokusebenzisa i-asynchronous pool. Kodwa, ngelishwa, ayizange indifanele ngokwenene, njengoko kwavelayo
Kule nkalo, ndaqala ukukhangela ezinye iindlela kwaye wayifumana! Abadali be-celery, ngokukodwa, njengoko ndiyiqonda
Kwakhona, unokujonga
Senza ntoni?
Ke, kuthotho olufutshane lwamanqaku, ndiza kukubonisa indlela yokuqokelela idatha kwimisebenzi yangasemva usebenzisa iFaust. Umthombo weprojekthi yethu yomzekelo iya kuba, njengoko igama libonisa,
P.S. Ukujonga ngokuzithemba ekwabhalwa ngalo umhlathi malunga nokubeka iliso, ndicinga ukuba umfundi osekupheleni kwenqaku lokugqibela usajongeka ngolu hlobo:
Iimfuno zeprojekthi
Ngenxa yokuba sele ndithembisile, masenze uluhlu oluncinci lwento ekufuneka ikwazi ukuyenza inkonzo:
- Layisha izibambiso kunye nesishwankathelo sazo (kubandakanywa iingeniso kunye nelahleko, i-balance sheet, ukuhamba kwemali - kulo nyaka uphelileyo) - rhoqo
- Layisha idatha yembali (kunyaka ngamnye wokurhweba, fumana amaxabiso agqithisileyo exabiso lokuvala lokuthengisa) - rhoqo
- Layisha idatha yamva nje yokurhweba - rhoqo
- Layisha uluhlu olulungiselelweyo lwezalathi zokhuseleko ngalunye - rhoqo
Njengoko kulindelekile, sikhetha igama leprojekthi ukusuka ekuqaleni: Horton
Silungisa iziseko zophuhliso
Isihloko sinamandla ngokuqinisekileyo, nangona kunjalo, konke okufuneka ukwenze kukubhala uqwalaselo oluncinci lwe-docker-qamba ngekafka (kunye nomgcini-mgcini-kwisikhongozeli esinye), kafdrop (ukuba sifuna ukujonga imiyalezo kwizihloko), mongodb. Sifumana [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
Akukho nto inzima apha konke konke. Abaphulaphuli ababini babhengezwa nge-kafka: enye (yangaphakathi) yokusetyenziswa ngaphakathi kwenethiwekhi edibeneyo, kwaye eyesibini (yangaphandle) yezicelo ezivela ngaphandle, ngoko bayithumela ngaphandle. 2181 - izibuko lomgcini wezilwanyana. Eminye, ndiyacinga, icacile.
Ukulungiselela i-skeleton yeprojekthi
Kuhlobo olusisiseko, ubume beprojekthi yethu kufuneka bubukeke ngolu hlobo:
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 *
*Yonke into ndiyiqaphele Asikayichukumisi, sidala iifayile ezingenanto.**
Sakha isakhiwo. Ngoku masenze ukuxhomekeka okuyimfuneko, bhala uqwalaselo kwaye uqhagamshele kwimongodb. Andiyi kubonelela ngokubhaliweyo okupheleleyo kweefayile kwinqaku, ukwenzela ukuba ungayilibazisi, kodwa ndiya kunika amakhonkco kwiinguqulelo eziyimfuneko.
Masiqale ngokuxhomekeka kunye nemeta malunga neprojekthi -
Okulandelayo, siqala ukufaka ukuxhomekeka kunye nokwenza i-virtualenv (okanye unokwenza ifolda ye-venv ngokwakho kwaye uvule imeko-bume):
pip3 install poetry (если ещё не установлено)
poetry install
Ngoku masidale
Xa uqhagamshela kwiMongo, yonke into ilula kakhulu. ibhengezwe
Kuza kwenzeka ntoni emva koko?
Inqaku alikho lide kakhulu, kuba apha ndithetha kuphela ngenkuthazo kunye nokulungiselela, ngoko ungandibeki tyala - ndiyathembisa ukuba inxalenye elandelayo iya kuba nentshukumo kunye nemizobo.
Ke, kweli candelo lilandelayo siza:
- Masibhale umxhasi omncinci wealphavantage kwi-aiohttp kunye nezicelo zeesiphelo esizifunayo.
- Masidale i-arhente eya kuqokelela idatha kwi-securities kunye namaxabiso embali kubo.
umthombo: www.habr.com