首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >摩托发动机用mongo db制造IO流吗?

摩托发动机用mongo db制造IO流吗?
EN

Stack Overflow用户
提问于 2015-06-04 10:48:27
回答 1查看 227关注 0票数 1

我想使用发动机作为我的龙卷风应用程序。正如在文档中给出的,这就是我应该做的ODM

代码语言:javascript
复制
from motorengine.document import Document
from motorengine.fields import StringField, DateTimeField

class Article(Document):
    title = StringField(required=True)
    description = StringField(required=True)
    published_date = DateTimeField(auto_now_on_insert=True)

    new_title = "Better Title %s" % uuid4()

def create_article():
    Article.objects.create(
        title="Some Article",
        description="This is an article that really matters.",
        callback=handle_article_created
    )

def handle_article_created(article):
   article.title = new_title
   article.save(callback=handle_article_updated)

def handle_article_updated(article):
    Article.objects.find_all(callback=handle_articles_loaded)

def handle_articles_loaded(articles):
    assert len(articles) == 1
    assert articles[0].title == new_title
    articles[0].delete(callback=handle_article_deleted)

def handle_article_deleted(number_of_deleted_items):
    try:
        assert number_of_deleted_items == 1
    finally:
        io_loop.stop()

io_loop.add_timeout(1, create_article)
io_loop.start()

混淆之处在于,一旦创建实例,这是否会与数据库保持一致的连接?我希望所有模型都具有数据库的非阻塞I/O操作,所以如果这样做了,就不会有问题了。但我不应该为用户模型实现它,在验证时我只访问一次。是否有一种访问用户数据的正常方式?

另外,我不清楚有几件事:

  1. 最后两行(ioloop)到底是怎么回事?
  2. 我是在不同的文件中声明不同的模型,我做io_loop.start()是每个文件吗?这部分在我看来很奇怪。

请帮帮我。谢谢。

EN

回答 1

Stack Overflow用户

发布于 2015-06-04 11:58:46

阅读MotorEngine的代码,在我看来,您使用MongoDB所做的每一个操作,比如Article.objects.create,都会检查一个MotorClient实例,并在可能的情况下重用一个实例。以下是缓存连接并从缓存中查找连接的位置:

https://github.com/heynemann/motorengine/blob/master/motorengine/connection.py#L62

每个MotorClient都有一个持久的IOStreams池,所以您的问题的答案是肯定的。

IOLoop.start启动应用服务器。你应该在一个文件里叫它一次。对start的调用将永远运行,或者直到您终止该进程为止。

add_timeout调用只是演示MotorEngine功能的一种方式,它等待片刻,然后调用create_article。您不会在实际的应用程序中这样做;您可能会在没有create_article的情况下直接在RequestHandler中调用add_timeout

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30641824

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档