3

I am trying to setup the new Sanic web framework (which is promised to be extremely fast) with motorengine in order to achieve 100% async.

My setup so far:

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())

Unfortunately I get:

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

Why does this crash?

John Moutafis
  • 22,254
  • 11
  • 68
  • 112
Creative crypter
  • 1,348
  • 6
  • 30
  • 67

1 Answers1

1

The specific problem you encounter is not about Sanic but has to do with motorengine.

Use the database URI to connect:

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

The solution came from this ticket: https://github.com/heynemann/motorengine/issues/82.


PS: For Sanic >= 0.4.0 you should consider using sanic-motor extension!

John Moutafis
  • 22,254
  • 11
  • 68
  • 112