Nginx-gebeurtenislus
HTTP, WebSockets en nieblokkerende databasis-I/O deel Nginx se gebeurtenislus.
SQL-gesentreerde agterkant Alfa
’n Rust-module vir Nginx wat PostgreSQL-funksies oor HTTP beskikbaar stel en veranderingskennisgewings oor WebSockets stuur.
GitHubHTTP, WebSockets en nieblokkerende databasis-I/O deel Nginx se gebeurtenislus.
Voorbereide stellings en pyplynverwerking verminder herhaalde werk en heen-en-weer-kommunikasie met die databasis.
PostgreSQL se JSONB-antwoordteks word onveranderd aangestuur. Deur uitvoervalidering af te skakel, vermy jy ook die ontleding van die antwoord se JSON.
Die bouweergawe met gewysigde libpq verwyder kopieë van die versoekliggaam na Rust en libpq vir geskikte versoeke. Outomatiese bufferlening geld vir geskikte groot versoeke oor ongeënkripteerde databasisverbindings. Standaardbouweergawes bly kopieer.
Die maatstaftoets hierbo het gekopieerde buffers gebruik. Antwoorde en TLS behels steeds kopieë.
# HTTP endpoints
pgxio_endpoint list_tasks
web.list_tasks read_only;
pgxio_endpoint create_task
web.create_task;
# WebSocket subscription authorization
pgxio_stream tasks
web.authorize_tasks;SQL-funksies ontvang en lewer JSON. Hulle hanteer navrae, besigheidsreëls en magtiging.
Verklaar die funksies wat jou API beskikbaar stel. pgxio kontroleer JWT’s en roep elke funksie binne ’n transaksie aan.
Gemagtigde WebSocket-intekeninge meld veranderings. Jou kliënt haal die huidige momentopname weer oor HTTP.
Intekeninge lewer veranderingseine, nie ’n blywende gebeurtenislogboek nie. Wanneer kliënte herverbind, teken hulle weer in en haal ’n vars momentopname.
Voer hierdie opdragte uit vanuit ’n bestaande plaaslike pgxio-kopie. Jy benodig Docker Compose en Python 3.9 of nuwer.
Die ingeslote ontwikkelingsomgewing luister op localhost. pgxio is alfasagteware; hierdie konfigurasie is vir plaaslike verkenning.
bin/pgxio init
bin/pgxio up
TOKEN=$(bin/pgxio token alice)
curl http://localhost:8080/v1/create_task \
-H "Authorization: Bearer $TOKEN" \
-H 'Content-Type: application/json' \
-d '{"title":"Hello from pgxio"}'
curl http://localhost:8080/v1/list_tasks \
-H "Authorization: Bearer $TOKEN" \
-H 'Content-Type: application/json' \
-d '{}'