Kā izveidot pakārtotus procesus pakalpojumā Node.js

Ka Izveidot Pakartotus Procesus Pakalpojuma Node Js



Programmējot “ node.js ”, viens process nekad nav efektīvs, lai tiktu galā ar pieaugošo lietojumprogrammas darba slodzi. Tāpēc var būt noteiktas situācijas, kad izstrādātājam ir jāizveido jauni procesi, jāstrādā ar ilgtermiņa uzdevumiem un jāiespējo mijiedarbība ar operētājsistēmu. To var panākt, izveidojot pakārtotos procesus, lai izmantotu vairākus procesus, tādējādi mērogojot mezgla lietojumprogrammu.

Šis raksts izskaidro tālāk norādīto saturu:







Kas ir bērnu process?

Pakārtots process atbilst procesam, kas izveidots, izmantojot citu procesu, t.i., vecāku. Node.js nodrošina “ bērns_process ” modulis, kas nodrošina efektīvu komunikāciju starp bērna procesiem. Turklāt šis modulis palīdz izsaukt operētājsistēmas līdzekļus, izpildot jebkuru sistēmas komandu bērna procesā.



Kā izveidot pakārtotus procesus pakalpojumā Node.js?

Bērns apstrādā ' node.js ” var izveidot, izmantojot tālāk norādītās pieejas:



  • ' spawn () ” Metode.
  • ' dakša () ” Metode.
  • ' izpildīt() ” Metode.
  • ' execFile() ” Metode.

1. pieeja: Bērnu procesu izveide node.js, izmantojot “spawn()” metodi

' spawn () ” metode ģenerē cmdlet jaunā procesā, izmantojot nodrošināto cmdlet un komandrindas argumentus. ChildProcess instance lieto/ievieš EventEmitter API, kas ļauj reģistrēt notikumu apdarinātājus pakārtotajos objektos. Šie notikumi ietver izeju, atvienošanu, kļūdu, ziņojumu un aizvēršanu.





Sintakse

bērns_process. nārsto ( cmdlet [ , args ] [ , opcijas ] )

Šajā sintaksē:



  • cmdlet: Lai izpildītu, ir nepieciešama virkne, kas ir cmdlet.
  • args: Tas attiecas uz virknes argumentu sarakstu. Noklusējuma vērtība ir nulles masīvs.
  • ' iespējas ” var būt “apvalks”, kam ir Būla vērtība. Tas ir tā, ka, ja tas ir ' taisnība ”, cmdlet tiek izpildīts no čaulas. Noklusējuma vērtība ir ' viltus ”, kas nozīmē, ka nav čaulas. Pēc noklusējuma, ' spawn () ” neizveido/ģenerē čaulu, lai palaistu cmdlet, tāpēc, piekļūstot pakārtotajam procesam, ir svarīgi to nodot kā “opciju”.

Atgriešanas vērtība: Šī metode izgūst ChildProcess objektu.

Tālāk ir parādīta bērna procesa izveides demonstrācija:

konst { nārsto } = pieprasīt ( 'bērns_process' ) ;

konst bērns = nārsto ( 'tu' , [ 'D: \S ETUPS ] , { apvalks : taisnība } ) ;

bērns. stdout . ieslēgts ( 'dati' , ( datus ) => {

konsole. žurnāls ( `stdout : $ { datus } ` ) ;

} ) ;

bērns. stderr . ieslēgts ( 'dati' , ( datus ) => {

konsole. kļūda ( `stderr : $ { datus } ` ) ;

} ) ;

bērns. ieslēgts ( 'tuvu' , ( kodu ) => {

konsole. žurnāls ( `bērnprocess tika iziets ar kodu $ { kodu } ` ) ;

} ) ;

Šajā koda blokā:

  • Pirmkārt, iekļaujiet ' bērns_process ” modulis bērna procesa izveidei.
  • Pēc tam izveidojiet bērnu procesu satura parādīšanai norādītajā ceļā, t.i., ' D:\SETUPS ”.
  • Visbeidzot, ' aizveriet ” notikums tiek izsaukts, kad tiek iziets no visa pakārtotā procesa un konsolē tiek parādīts izejas ziņojums.

Izvade

Šeit izpildiet šo cmdlet, lai palaistu kodu un rādītu saturu mērķa ceļā:

mezgla temp. js

2. pieeja: Bērnu procesu izveide node.js, izmantojot “fork()” metodi

Šī metode ir saistīta ar ' spawn () ” metode, kurā saziņa starp bērna un vecāku procesiem var tikt veikta, izmantojot sūtīt () ” metode.

' dakša () ” metode atdala sarežģītos aprēķina uzdevumus no notikumu cilpas (galvenās). Šo metodi var izmantot, lai piekļūtu vairākiem pakārtotajiem procesiem, taču tā var ietekmēt kopējo veiktspēju, jo katram procesam ir sava atmiņa.

Sintakse

bērns_process. dakša ( mdpath [ , args ] [ , opcijas ] )

Saskaņā ar šo sintaksi:

  • ' mdpath ” aizņem virkni, kas apzīmē moduli, kas jāizpilda bērnā.
  • ' args ” attiecas uz virknes argumentu sarakstu.
  • ' iespējas ” var būt “execPath”, “env”, “CWD”, “detached” un “execArgv”.

Atgriešanas vērtība: Šī metode izgūst ChildProcess gadījumu.

Kods (vecāku process)

Tagad izejiet tālāk norādīto koda bloku, kas nodrošina saziņu starp vecāku un bērnu procesiem, izmantojot “ sūtīt () ” metode:

konst cp = pieprasīt ( 'bērns_process' ) ;

ļaujiet bērnam = cp. dakša ( __dirname + '/fork2.js' ) ;

bērns. ieslēgts ( 'ziņa' , funkcija ( x ) {

konsole. žurnāls ( 'Vecāku process ieguva:' , x ) ;

} ) ;

bērns. nosūtīt ( { Sveiki : 'no vecāku procesa' } ) ;

bērns. ieslēgts ( 'tuvu' , ( kodu ) => {

konsole. žurnāls ( `bērnprocess tika iziets ar kodu $ { kodu } ` ) ;

} ) ;

Šajā kodā:

  • Tāpat iekļaujiet ' bērns_process ” modulis bērna procesa izveidei.
  • Tagad norādiet bērna procesa ceļu, izmantojot “ dakša () ” metode.
  • Visbeidzot, parādiet ziņojumu, kas atspoguļo vecāku procesu, izmantojot “ sūtīt () ” metodi un parādiet radušos kļūdu(-as), ja tādas ir.

Kods (bērnprocess)

Šis koda fails, t.i., ' fork2.js ” ir atvasinātais process, kas arī nosūta ziņojumu, izmantojot sūtīt () ” metodi, šādi:

process. ieslēgts ( 'ziņa' , funkcija ( m ) {

konsole. žurnāls ( 'Bērna process ieguva:' , m ) ;

} ) ;

process. nosūtīt ( { Sveiki : 'no bērna procesa' } ) ;

Izvade

Tagad palaidiet tālāk norādīto cmdlet, lai izpildītu kodu:

mezgls forkchild. js

No šī rezultāta tiek apstiprināts, ka vecāku un bērnu procesa komunikācija tiek veikta atbilstoši.

3. pieeja: Pakārtoto procesu izveide node.js, izmantojot metodi “exec()”.

' izpildīt() ” metode vispirms izveido čaulu un pēc tam palaiž cmdlet. Šī metode tiks izmantota kopējo direktoriju izgūšanai.

Sintakse

bērns_process. izpild ( cmdlet [ , opcijas ] [ , atzvani ] )

Dotajā sintaksē:

  • ' cmdlet ” aizņem virkni, kas apzīmē izpildāmo komandu ar atstarpi atdalītiem argumentiem.
  • ' iespējas ” ietver “cwd”, “kodējums”, “apvalks” utt.
  • ' atzvani ” funkcija tiek izsaukta, kad process/operācija beidzas.

Atdeves vērtība

Šī metode izgūst ChildProcess gadījumu.

Tagad pārejiet uz kodu, kurā norādīts direktoriju skaits:

konst { izpild } = pieprasīt ( 'bērns_process' ) ;
izpild ( 'rež. | atrast /c /v ''' , ( kļūda, stdout, stderr ) => {
ja ( kļūda ) {
konsole. kļūda ( `izpildīšanas kļūda : $ { kļūda } ` ) ;
atgriezties ;
}
konsole. žurnāls ( `stdout : Numurs katalogi -> $ { stdout } ` ) ;
ja ( stderr != '' )
konsole. kļūda ( `stderr : $ { stderr } ` ) ;
} ) ;

Šajā koda fragmentā iekļaujiet ' bērns_process ” modulis, lai izveidotu/veidotu bērnu procesus. Pēc tam tiek galā ar izņēmumiem/kļūdām un parādiet kopējo direktoriju skaitu pašreizējā darba direktorijā.

Izvade

Lai palaistu kodu, izpildiet šo kodu:

mezgla execchild. js

Šajā izvadē var norādīt, ka tiek parādīti kopējie direktoriji pašreizējā darba direktorijā.

4. pieeja: Pakārtoto procesu izveide node.js, izmantojot execFile() metodi

Iekš ' execFile() ' metodi, mērķa izpildāmais fails tiek radīts tieši jauna procesa veidā, tāpēc tas ir efektīvāks nekā ' izpildīt() ” metode. Šī metode rada izveidoto ' execchild.js ” failu jauna procesa veidā.

Sintakse

bērns_process. execFile ( faila nosaukums [ , args ] [ , opcijas ] [ , atzvani ] )

Dotajā sintaksē:

  • ' faila nosaukums ” aizņem virkni, kas apzīmē faila nosaukumu vai izpildes ceļu.
  • ' args ” atbilst virknes argumentu sarakstam.
  • ' iespējas ” ietver “cwd”, “kodējums”, “apvalks” utt.
  • ' atzvani ” funkcija tiek izsaukta, kad process beidzas. Funkcijas argumenti var būt kļūda, stdout utt.

Atdeves vērtība

Šī metode arī izgūst ChildProcess gadījumu.

Tagad apsveriet šādu kodu, kas rada mērķa izpildāmo failu kā jaunu procesu:

konst { execFile } = pieprasīt ( 'bērns_process' ) ;
konst x = execFile ( 'mezgls' , [ 'execchild.js' ] ,
( kļūda, stdout, stderr ) => {
ja ( kļūda ) {
mest kļūda ;
}
konsole. žurnāls ( stdout ) ;
} ) ;

Pamatojoties uz šīm koda rindām, veiciet tālāk norādītās darbības.

  • Atkārtojiet apspriesto procedūru, lai iekļautu ' bērns_process ” modulis.
  • Nākamajā darbībā izmantojiet ' execFile() ” metode, kas izveido norādīto izpildāmo failu (apskatīts iepriekšējā pieejā) kā jaunu procesu, tādējādi uzskaitot kopējos direktorijus darba direktorijā.

Izvade

Lai palaistu kodu, izpildiet tālāk norādīto cmdlet:

mezgla izpildfails. js

Šajā iznākumā var pārbaudīt, vai norādītais izpildāmais fails ir izveidots un tiek parādīts direktoriju skaits.

Secinājums

Pakārtotos procesus pakalpojumā Node.js var izveidot, izmantojot “ spawn () ' metode, ' dakša () ' metode, ' izpildīt() ' metode vai ' execFile() ” metode. Šīs pieejas rada atvasināto procesu, iespējo vecāku un bērnu procesa saziņu vai attiecīgi uzskaita direktorijus pašreizējā darba direktorijā (tieši vai izveidojot mērķa izpildāmo failu).