python - run - ¿Cómo accedo al MongoDB de Meteor desde otro cliente, mientras Meteor se está ejecutando?
meteor schema (6)
En cuanto a un retraso de 10 segundos en las actualizaciones: ¡Acceda al oplog de MongoDB! Hay más información sobre cómo hacerlo aquí:
http://meteorhacks.com/lets-scale-meteor.html
Asegúrese de instalar colecciones inteligentes y utilizarlas (crear instancias de sus colecciones con Meteor.SmartCollection en lugar de Meteor.Collection) y verá que las actualizaciones son básicamente inmediatas.
Me gustaría acceder al MongoDB de Meteor desde un cliente de Python, mientras Meteor se está ejecutando .
No puedo iniciar un mongod porque la base de datos de Meteor está bloqueada.
¿Cómo accedo a la base de datos desde otro cliente?
Meteor inicia el mongod por usted en el puerto 3002 cuando ejecuta el comando meteor
, y almacena el archivo de datos mongo en .meteor/local/db
Salida de ps aux | grep ''mongod''
ps aux | grep ''mongod''
muestra el comando mongod que usa el meteorito:
/usr/local/meteor/mongodb/bin/mongod --bind_ip 127.0.0.1 --smallfiles --port 3002 --dbpath /path/to/your/project/.meteor/local/db
Así que solo conecta tu cliente mongo en consecuencia. En Python:
>>> import pymongo
>>> con = pymongo.Connection(host=''127.0.0.1'', port=3002)
>>> con.database_names()
[u''meteor'', u''local'']
ACTUALIZACIÓN: desafortunadamente hacer cambios directamente en mongo de esta manera no se reflejará en vivo en la aplicación, pero los cambios se reflejarán en una carga (re) de página completa.
También puedes encontrarlo desde el código del lado del servidor usando:
process.env.MONGO_URL
Incluso si no establece esta variable de entorno cuando se ejecuta, se establece en el valor predeterminado. Esto parece ser cómo se encuentra internamente (packages / mongo / remote_collection_driver.js)
El dado por meteor mongo -U
parece reconstruir el dominio predeterminado / ip y db-name, pero usa el puerto almacenado en el archivo.
Puede colocarlo en cualquier lugar de la carpeta del servidor y leerlo desde la línea de comando.
console.log(''db url: '' + process.env.MONGO_URL);
Configuré una página web para mostrarla y verificar en las pruebas de selenio que estamos usando la base de datos de prueba, y no sobrescribir los datos en vivo.
Use las instrucciones de despliegue de Meteor
El comando se verá así:
PORT=3000 MONGO_URL=mongodb://localhost:27017/myapp node bundle/main.js
Y aquí un script de shell para obtener Mongo URI y Mongo Database:
#!/bin/bash -eux
read -s -p "Enter Password: " password
cmd=$(meteor mongo --url myapp.meteor.com << ENDPASS
$password
ENDPASS)
mongo_uri=$(echo $cmd | cut -f2 -d" ")
mongo_db=$(echo $mongo_uri | cut -d/ -f 4)
#my_client_command_with MONGODB_URI=$mongo_uri MONGO_DB=$mongo_db
`` ``
El comando meteor
proporciona una manera limpia. Para obtener la URL para ejecutar mongod:
meteor mongo -U
que puedes analizar desde python.