Snext es una aplicación Next.js que te permite crear rutas API en Python.
Snext, ¿porque suena a “serpiente”?. Ya sabes, como una pitón.
/! /! /! Este es un experimento inicial
Oye, si terminas allí, probablemente seas un desarrollador de JavaScript y Python sea solo tu segundo idioma.
A continuación se explica cómo configurar un entorno Python eficiente.
Sugiero usar Pyenv para instalar Python. Considérelo como un equivalente a Node Version Manager o Volta pero para Python.
Esto equivale a usar Volta o NVM en el ecosistema Node.
Python no tiene una carpeta node_modules
. Quizás eso sea lo mejor, sin embargo, hace que sea bastante difícil manejar las dependencias cuando tienes muchos proyectos en tu máquina.
Un entorno virtual es un poco similar: le indicará a Python que instale paquetes localmente en su proyecto actual, y no globalmente.
La diferencia con Node es que debes habilitarlos sistemáticamente.
Configure un entorno virtual e instale los paquetes de Python:
python3 -m venv ./venv
source ./venv/bin/activate
pip install -r requirements.txt
Debes activar el entorno virtual cuando comiences a trabajar:
source ./venv/bin/activate
Lamentablemente, este comando no funciona en scripts NPM. Tienes que escribirlo cada vez.
vercel
puede resolver nuestros problemas (consulte https://vercel.com/docs/cli#commands/dev) => ¡listo, lo hace! Utilice Vercel CLI en lugar de next dev
.
Comando CLI de Vercel vercel dev
puede simular un entorno sin servidor localmente, para que pueda probar sus rutas API.
Si coloca todas las rutas API en ./api/
y usa vercel dev
, puede tener rutas API de Python y Node.js (y, por supuesto, la interfaz Next.js aún funciona bien).
Leer vercel/vercel#6197
Cuando ejecute Next, querrá que todo se ejecute en localhost:3000
, pero tendrá 2 servidores: uno para Node y otro para Python. Esto requiere algo de lógica de reescritura para funcionar.
Además, es posible que tengamos múltiples rutas API, que actuarán como funciones sin servidor cuando se implementen. Pero localmente, debemos convertirlos en un servidor.
El patrón recomendado para obtener datos estáticos de sus rutas API en Next es reutilizar la lógica central de la ruta directamente en getStaticProps
. Pero esto sólo es posible porque ambos usan JS. Con Python, primero necesitaríamos construir las rutas API, ejecutarlas y luego solo construir la interfaz.
Necesita ser probado con Vercel CLI.
Tenemos este error https://github.com/vercel/community/discussions/103
en la última versión, el tiempo de ejecución de Python parece demasiado grande. Ver vercel/community#103 (comentario) Ver vercel/vercel#2830
Consulte https://github.com/vercel/vercel/blob/main/errors/now-dev-as-dev-script.md
El script debe tener un nombre distinto, por ejemplo dev:vercel
de lo contrario se crea un bucle infinito.
No -
en los nombres de las carpetas en Python, o lo pasarás mal importando archivos... Usa guión bajo _
. Esto puede generar URL confusas porque el nombre de la carpeta está vinculado al nombre de la ruta en Siguiente.
(Desde mi experiencia limitada con Python) Yo tendería a comparar Flask o Falcon con Express: se usa mucho, lo suficientemente mínimo. Pero el comportamiento de bloqueo de Python puede resultar muy confuso para el desarrollador de JavaScript. Así que optaré por Sanic, porque se basa en async/await como Node.js y podría ser el menos confuso.
De todos modos, todo el conocimiento recopilado para un marco debería poder reutilizarse para cualquier otro marco.
Para simplificar, supondremos un alojamiento en Vercel. Es posible que necesitemos un vercel.json
para indicarle a Vercel qué tiempo de ejecución usar: https://vercel.com/docs/runtimes#advanced-usage/community-runtimes
Dado que el desarrollo de Vercel funciona, deberíamos esperar que la implementación de Vercel funcione de inmediato. Para ser probado.
En Python, necesita un entorno virtual para aislar sus paquetes entre aplicaciones, mientras que en JS node_modules
desempeña esta función. El problema es que el entorno virtual debe activarse cuando empiezas a trabajar, por lo que ese es un paso adicional para el desarrollador. Para empeorar las cosas, el comando source
que activa el entorno no se puede colocar (la última vez que lo verifiqué) en package.json
, por lo que debe recordar el comando correcto cada vez.
Este es un proyecto Next.js iniciado con create-next-app
.
Primero, ejecute el servidor de desarrollo:
npm run dev
# or
yarn dev
Abra http://localhost:3000 con su navegador para ver el resultado.
Puede comenzar a editar la página modificando pages/index.js
. La página se actualiza automáticamente a medida que edita el archivo.
Se puede acceder a las rutas API en http://localhost:3000/api/hello. Este punto final se puede editar en pages/api/hello.js
.
El directorio pages/api
está asignado a /api/*
. Los archivos de este directorio se tratan como rutas API en lugar de páginas de React.
Para obtener más información sobre Next.js, consulte los siguientes recursos:
Puede consultar el repositorio de GitHub de Next.js: ¡sus comentarios y contribuciones son bienvenidos!
La forma más sencilla de implementar su aplicación Next.js es utilizar la plataforma Vercel de los creadores de Next.js.
Consulte nuestra documentación de implementación de Next.js para obtener más detalles.