Python

Kā lietot Django kanālu

Kā lietot Django kanālu
Django ir populāra Python sistēma, ko izmanto, lai izstrādātu tīmekļa lietotnes, izmantojot WGSI (Web servera vārtejas saskarne) un ASGI (Asynchronous Server Gateway Interface) servera specifikācijas. WGSI tiek izmantots sinhrono Python lietotņu izstrādei, un AGSI tiek izmantots asinhrono un sinhrono tīmekļa lietotņu izstrādei. Kanāls ir noderīga Django funkcija, ko izmanto, lai apstrādātu WebSocket, tērzēšanas protokolu utt. blakus HTTP protokolam. Kanāls ir veidots uz ASGI servera specifikācijām. Izmantojot divvirzienu interaktīvu saziņas sesiju starp lietotāja pārlūku un serveri, var atvērt WebSocket. Klients ierosina WebSocket savienojumu, un serveris atbild ar pieņemt vai tuvu ziņu. The WebSocket ziņojumi tiek ievietoti kanālā, izmantojot ražotājiem un nosūtīts uz patērētājiem kas klausās kanālā. Šī apmācība parāda, kā to izmantot kanālus tikt galā WebSocket ziņas.

Priekšnoteikumi

Pirms praktizēt šajā apmācībā parādīto skriptu, noteikti veiciet šādus uzdevumus.

Iestatiet Django lietotni

Palaidiet šo komandu, lai izveidotu Django lietotni ar nosaukumu socketapp:

$ python3 pārvaldīt.py startapp socketapp

Lai instalētu kanālu, izpildiet šo komandu:

$ pip instalēt kanālus

Pievienojiet kanālus un lietotnes nosaukumu INSTALLED_APP daļa no iestatījumi.py fails:

INSTALLED_APPS = [

'kanāli',
'socketapp'
]

Definējiet ASGI_APPLICATION vērtību sistēmā iestatījumi.py fails:

ASGI_APPLICATION = 'kanāla_pro.asgi.pieteikums ”

Izveidojiet mapi ar nosaukumu veidnes iekšpusē socketapp mapē un iestatiet lietotnes veidnes atrašanās vietu mapē Veidnes daļa no iestatījumi.py fails:

PARAUGI = [

… .
'DIRS': ['/ home / fahmida / channel_pro / socketapp / templates'],
… .
,
]

Pēc Django servera palaišanas terminālā parādīsies šāda izeja. Rezultāts parāda, ka ASGI / Channels 3. versija.0.3 darbojas.

Izveidojiet veidnes failu ar nosaukumu indekss.html definētajā veidnes vietā, lai parādītu WebSocket sūtītos datus. Socket objekts, kas izveidots, izmantojot JavaScript, nolasīs datus, izmantojot JSON.parsēt () metodi, pēc tam vērtību pārnest uz

tagu, kas satur ID vērtību, 'msg."

indekss.html





Django kanāla apmācības




text




Mainīt skati.py datne socketapp ar šādu saturu. The indekss.html veidnes fails tiks parādīts pārlūkprogrammā ar tekstu mainīgs, kad rādītājs () Šī skripta metode tiek izsaukta no URL.py failu. Ja no kontaktligzdas netiek pārsūtīts neviens ziņojums, tekstsLinuxHint'tiks parādīts pārlūkprogrammā.

skati.py

# Importēt renderēšanas moduli no Django
no django.saīsnes importēt renderēšanu
# Izveidojiet indeksa funkciju, lai pārlūkprogrammā parādītu HTML failu
def indekss (pieprasījums):
atgriezt renderēšanu (pieprasījums, indekss.html ", context = 'text': 'LinuxHint')

Mainīt URL.py datne socketapp ar šādu saturu. Skriptā ir definēti divi ceļi:admin /'ceļš tiek izmantots, lai atvērtu Django administrācijas informācijas paneli, unziņa /'ceļš tiek izmantots, lai lasītu WebSocket ziņojumu.

URL.py

no django.ieguldījuma importēšanas administrators
no django.URL importēšanas ceļš
no socketapp importēšanas skatiem
urlpatterns = [
ceļš ('admin /', admin.vietne.URL),
ceļš ('msg /', skati.indekss)
]

Kad šis URL tiek izpildīts, nenosakot patērētāja un maršrutēšanas failus, HTTP protokols darbosies un parādīsies šāda izeja.

http: // localhost: 8000 / msg

Tagad izveidojiet patērētājiem.py failu iekšpusē socketapp mapi ar šādu skriptu. The savienot () metode ws_patērētājs tiks izmantots, lai pieņemtu kontaktligzdas savienojumu, katru sekundi nolasītu pašreizējo laika vērtību un nosūtītu pašreizējo laiku JSON formātā, izmantojot WebSocket, kad šī metode tiek izsaukta no maršrutēšanas faila.

patērētājiem.py

# Importējiet JSON moduli
importa json
# Importēt WebsocketConsumer
no kanāliem.vispārējs.importēt Websocket WebsocketConsumer
# Datuma laika moduļa importēšana
no datetime importa datetime
# Importēt miega moduli
no laika importa miegs
# Definējiet patērētāju klasi, lai datus nosūtītu, izmantojot WebsocketConsumer
klase ws_consumer (WebsocketConsumer):
def savienojums (pats):
pats.pieņemt ()
kamēr (True):
tagad = datuma laiks.tagad ()
pats.sūtīt (json.izgāztuves ('timeValue': tagad.strftime ("% H:% M:% S"))
gulēt (1)

Izveidojiet maršrutēšana.py iekšpusē socketapp mapi ar šādu skriptu. The 'ziņa /'skripts ir noteikts ceļš, lai piezvanītu patērētājam par datu nosūtīšanu kontaktligzdā.

maršrutēšana.py

no django.URL importēšanas ceļš
no .patērētāji importē ws_consumer
# Iestatiet ceļu, lai piezvanītu patērētājam
ws_urlpatterns = [
ceļš ('msg /', ws_patērētājs.as_asgi ())
]

Mainīt asgi.py failu ar šādu skriptu. Moduļi, kas nepieciešami, lai apstrādātu HTTP un WebSocket pieprasījumus, tiek importēti skriptā.

asgi.py

# Importēt moduli
importēt os
# Importējiet get_asgi_application, lai apstrādātu http protokolu
no django.kodols.asgi importēt get_asgi_application
# Importējiet ProtocolTypeRouter un URLRouter, lai iestatītu tīmekļa ligzdas maršrutēšanu
no kanāliem.maršrutēšanas importēšana ProtocolTypeRouter, URLRouter
# Importējiet AuthMiddlewareStack, lai apstrādātu tīmekļa vietni
no kanāliem.Autent importēt AuthMiddlewareStack
# Importējiet tīmekļa ligzdas maršrutēšanu
no socketapp.maršrutēšanas importēšana ws_urlpatterns
# Piešķirt vērtību DJANGO_SETTINGS_MODULE
os.vide.setdefault ('DJANGO_SETTINGS_MODULE', 'channel_pro.iestatījumi')
# Definējiet lietojumprogrammas mainīgo, lai apstrādātu http un tīmekļa vietni
application = ProtocolTypeRouter (
'http': get_asgi_application (),
'websocket': AuthMiddlewareStack (URLRouter (ws_urlpatterns))
)

Tagad vēlreiz palaidiet šo URL no pārlūka, lai nolasītu datus no WebSocket.

http: // localhost: 8000 / msg /

Ja patērētājs un maršrutētājs darbojas pareizi, pārlūkprogrammā tiks parādīts šāds digitālais pulkstenis. Šeit maršrutētājs ir nosūtījis WebSocket pieprasījumu, izmantojot 'ziņa /ceļš pie patērētāja, kurš ir pieņēmis pieprasījumu un nosūtījis datus uz veidni, lai pārlūkprogrammā parādītu digitālo pulksteni, kur katra sekunde tiek atjaunināta pašreizējā laika otrā vērtība.

Secinājums

Šī apmācība parādīja, kā īstenot reāllaika lietojumprogrammu, izmantojot Django ietvaru un kanālus, izveidojot vienkāršu digitālo pulksteni. Citus reāllaika lietojumprogrammu veidus var arī ieviest, izmantojot Django un kanālus, piemēram, tiešsaistes tērzēšanas sistēmas. Šajā apmācībā izmantotie skripti darbojas tikai Django versijās 3+ un Channel versijās 3+. Tātad, ja izmantojat vecāku Django vai Channel versiju, pirms šajā apmācībā sniegtā skripta testēšanas jums būs jāatjaunina versija.

HD Remastered spēles operētājsistēmai Linux, kurām nekad agrāk nebija Linux laidiena
Daudzi spēļu izstrādātāji un izdevēji nāk klajā ar veco spēļu HD remaster, lai pagarinātu franšīzes darbības laiku. Lūdzu, faniem, kas pieprasa saderī...
Kā izmantot AutoKey, lai automatizētu Linux spēles
AutoKey ir darbvirsmas automatizācijas lietderība operētājsistēmām Linux un X11, kas ieprogrammēta Python 3, GTK un Qt. Izmantojot skriptu un MACRO fu...
Kā parādīt FPS skaitītāju Linux spēlēs
Linux spēles ieguva lielu impulsu, kad Valve 2012. gadā paziņoja par Linux atbalstu Steam klientam un viņu spēlēm. Kopš tā laika daudzas AAA un indie ...