Original en anglais: https://argusic.com/subject/pg-net

pg_net

Une extension PostgreSQL qui permet des requêtes HTTP/HTTPS asynchrones (non bloquantes) avec SQL.

Fonctionnesource : GitHubpage d'accueilPythonApache-2.0commit 5fb36dd982bc

Python, sous licence Apache-2.0. Le projet se décrit ainsi : http client, postgres, postgresql, postgresql extension, sql et supabase.

pg_net fonctionne. Un agent Argusic l'a installé en 35 minutes et a rencontré 7 erreurs, toutes corrigées sans aide sur une machine propre sans GPU, et toute la session a été enregistrée.

PostgreSQL 16.4 with pg_net 0.20.4 preloaded is running, its background worker is up, the real nginx fixture serves localhost:8080 and 127.0.0.1:8888 with 200s, and the full 92-test pytest suite passes.

Ce que l'agent a obtenu sur une machine propre, dans ses propres mots. Comment c'est mesuré

Mesuré par Argusic sur une machine vierge, à chaque fois. Chaque chiffre renvoie à ses preuves. Score Argusic de 60 sur 100 (la moyenne des scores des exécutions de ce projet).

En un coup d'œil

verdict
Fonctionne
Score Argusic
60 / 100
coût de l'exécution de vérification
0,24 USD (mesuré)
exécutions enregistrées
2
dernier test
étoiles
376
forks
44
issues ouvertes
39
observateurs
28
taille
1 MB
créé le
dernier push

Données du projet issues de GitHub, avec un lien en haut de cette page, mis à jour le . Données de test d'Argusic (CC BY 4.0) ; chaque chiffre renvoie à une page d'exécution avec le log complet, l'enregistrement et leurs empreintes sha256.

Ce qui a été mesuré

Tiré de l'exécution qui a décidé ce verdict. Chaque ligne est une valeur enregistrée, pas une estimation.

Temps perdu à cause de chaque échec lors du test de pg_net, tiré de l'exécution enregistrée
Chaque barre est un échec enregistré par l'agent, avec le temps qu'il a coûté. Tiré de cette exécution, et de nulle part ailleurs.

Ce qui s'est mal passé, dans les mots de l'agent

Les propres mots de l'agent, le plus grave en premier, jamais réécrits en conseils.

  • partial-suite runs failed on leftover state (orphaned net schema, stale queue rows, pre-created pg_stat_statements/roles)10 minutes
  • nginx failed: unknown directive if/echo and missing PCRE/zlib8 minutes
  • make link failed: cannot find -lcurl (no curl dev package installed)5 minutes
  • postgres startup failed: could not access file pg_stat_statements4 minutes
  • pip install blocked by PEP 668 and psycopg import failed3 minutes
  • tests could not connect: default socket path not writable and roles missing3 minutes
Temps d'installation
35 minutes
De la machine vierge à la fin
26 minutes
Erreurs rencontrées et corrigées
7 rencontrées, 7 corrigées sans aide humaine
Comment le résultat a été prouvé
pytest full suite exited 0 with '92 passed in 141.60s'; net.http_get/post/delete via pg_net worker against real nginx returned status_code 200 with expected bodies; psql showed pg_net 0.20.4 installed and 1 worker running; curl localhost:8080 returned 200
Tokens de modèle utilisés
1 017 775
Commit exact testé
5fb36dd982bc
Image de conteneur
sha256:cdd920bce783

Ce qui n'a pas été mesuré

L'autre moitié, pour que vous voyiez exactement jusqu'où vont ces preuves. Une lacune est affichée comme une lacune et n'est jamais comblée.

Pic de mémoire GPU
cette exécution a eu lieu sur une machine CPU, il n'y avait donc pas de GPU à mesurer
Comportement sur une longue durée
chaque tentative utilise les réglages documentés les plus légers et un budget de temps fixe : on mesure donc s'il fonctionne, pas comment il tient sous la charge

La fin de l'enregistrement

Les dernières lignes de la session de terminal qui a décidé ce verdict, exactement telles qu'elles ont été enregistrées.

- Launch: PostgreSQL cluster running, pg_net background worker up (`pg_stat_activity` shows 1 worke…
- Full test suite from clean DB state: `92 passed in 141.60s`, exit 0.
- Real end-to-end behavior: `net.http_get` → status 200 body `?x=1`; `net.http_post` → 200 body `{"…
**Errors fixed**
- `cannot find -lcurl` (no curl dev package) → linked system `libcurl.so.4`, headers from matching …
- `pg_stat_statements` missing at startup → built PG contrib module (4m).
- pg_net worker `role "" does not exist` → removed invalid `pg_net.username=''` config (2m).
- PEP 668 + missing psycopg binary → venv with `psycopg[binary]` (3m).
- Test env plumbing (socket dir `/tmp`, `runner`/`postgres` roles) (3m).
- nginx `if` directive needs rewrite module → built PCRE2+zlib, reconfigured nginx (8m).
- Initial partial-suite failures were stale-DB artifacts in the shared cluster; clean pre-state ful…
**Unverifiable in container**: kernel refused binding `::1` (error 99), so the 8888 fixture also li…

Revoir toute la session, chaque commande depuis une machine propre jusqu'à ce point.

Comment le test a été mené

Un agent, un conteneur, aucune aide humaine. Il installe le projet comme l'indique sa propre documentation, l'exécute et corrige ce qui casse. Tout ce qui suit est enregistré tel que cela s'est passé : la session de terminal, le log et le commit exact. La méthode complète.

Points forts et limites

Des faits mesurés, pas des opinions. Comment ce site est rédigé.

Ce qui s'est bien passé

  • A atteint un état de fonctionnement sur une machine propre, avec la session enregistrée.
  • S'est remis des 7 erreurs sans intervention humaine, ce qui indique que les échecs sont assez bien documentés pour être résolus.
  • A fonctionné sans GPU, il n'en a donc pas besoin pour démarrer.
  • Sous licence Apache-2.0, selon son hébergeur.
  • Mesuré 2 fois, le résultat n'est donc pas un cas isolé.

Ce qui ne s'est pas bien passé, ou n'est pas connu

  • Installation en 35 minutes, plus lente que la médiane des 4 projets comparables mesurés par Argusic.

Sur les 5 projets http-client qu'Argusic a installés et chronométrés, pg_net a été le 4e plus rapide à atteindre un état de fonctionnement, et 4 sur 5 en ont atteint un.

Pour quoi c'est un choix raisonnable

  • L'essayer sur un ordinateur portable ou un petit serveur : il a atteint un état de fonctionnement sans GPU.

Également testés, dans le même domaine

Chacun de ces projets a été installé et exécuté par Argusic sur une machine propre. Rien n'apparaît ici sans avoir été testé.

Historique des exécutions

testé partentativerésultatscorecoût USDdate
Argusic Runner2/3Fonctionne100,000,24
Argusic Runner1/3N'a pas fonctionné20,000,90

Sujets (depuis GitHub)

http-clientpostgrespostgresqlpostgresql-extensionsqlsupabase

Intégrer le badge

Markdown pour le README du projet. Il renvoie vers cette page ; conditions sur la page des conditions.

[![Tested by Argusic](https://argusic.com/badge/pg_net.svg)](https://argusic.com/subject/pg-net)

Questions

pg_net fonctionne-t-il ?
Oui. pg_net fonctionne. Argusic l'a installé et lancé sur une machine propre en 35 minutes, en rencontrant 7 erreurs en route, et a enregistré la session.
Comment Argusic a-t-il testé pg_net ?
Sur une machine vierge et jetable, avec chaque commande enregistrée et le dépôt épinglé au commit 5fb36dd982bc. 2 tentatives sont enregistrées, et la méthode complète se trouve sur la page de méthodologie.
Combien a coûté le test de pg_net ?
L'exécution qui a produit ce verdict a coûté 0,24 USD : le coût réel du calcul et du modèle, pas un prix catalogue par million de tokens. Il est enregistré sur la page de cette exécution.
Combien de temps faut-il pour installer pg_net ?
35 minutes lors de l'exécution qui a décidé ce verdict, d'une machine propre à un état de fonctionnement. Il s'agit d'une tentative mesurée, pas d'une moyenne.
pg_net a-t-il besoin d'un GPU ?
Pas pour démarrer. Argusic a atteint un état de fonctionnement sur une machine sans GPU.
Qu'est-ce qui pose problème lors de l'installation de pg_net ?
7 problèmes sont survenus lors de l'exécution enregistrée, et 7 ont été corrigés sans aide humaine. Chacun, avec le temps qu'il a coûté, est listé sur cette page.
Comment pg_net se compare-t-il aux alternatives ?
Sur les 5 projets http-client qu'Argusic a installés et chronométrés, pg_net a été le 4e plus rapide à atteindre un état de fonctionnement, et 4 sur 5 en ont atteint un.
Où sont les preuves pour pg_net ?
Les 2 exécutions enregistrées se trouvent sur cette page, chacune avec un lien vers son log complet et son enregistrement du terminal, conservés avec une empreinte sha256 pour qu'ils ne puissent pas être modifiés discrètement.

Discussion