Python 3.6 - Sanic Motorengine

Я пытаюсь настроить новый Sanic веб-фреймворк (который обещает быть очень быстрым) с motorengine для достижения 100% асинхронности.

Мои настройки пока:

app = Sanic(__name__)

@app.listener('after_server_start')
async def setup_dbconn(app, loop):
    connect("database_name", username="user", password="pass", host="192.168.1.200", port=27017, io_loop=asyncio.get_event_loop())

К сожалению, я получаю:

motorengine.connection.ConnectionError: Cannot connect to database default :
Unknown option username

Почему этот сбой?

1 ответ

Конкретная проблема, с которой вы сталкиваетесь, не о Sanic но имеет отношение к motorengine,

Используйте URI базы данных для подключения:

motorengine.connect(
    db=name, 
    alias=alias, 
    host="mongodb://username:password@localhost:port", 
    io_loop=tornado.ioloop.IOLoop.instance()
)     

Решение пришло из этого билета: https://github.com/heynemann/motorengine/issues/82.


PS: для Sanic >= 0.4.0 вы должны рассмотреть возможность использования расширения sanic-motor!

Другие вопросы по тегам