【问题标题】:Realtime string matching results in DjangoDjango中的实时字符串匹配结果
【发布时间】:2013-11-14 00:41:47
【问题描述】:

我不确定从哪里开始,所以真的要寻找一些指针或关键字来搜索。

假设我们有一个文件:

myHugeFile = open('someGiganticFile.txt')

搜索从上到下需要 10 分钟,没有任何索引。

for line in myHugeFile:
    if 'keyword' in line:
        send_line_to_web_user(line)

我想将此搜索集成到 django 页面中,但是对于大文件,页面加载可能会超时。用户将能够搜索'keyword',然后页面上的列表会在他们面前实时填充搜索结果,因为它们会弹出。

有什么东西可以做到这一点吗?这将节省我为每个用户会话存在的结果缓冲区制作一些超级复杂的轮询系统。 也许是不同的框架或库?冒险进入 node.js 领域?除了“实时轮询 django”等等之外,我对要搜索的内容有点不知所措。

【问题讨论】:

    标签: python django real-time


    【解决方案1】:

    这是考虑转移到 node.js 或其他一些异步框架的理想案例。如果您想坚持使用 Python,Tornado 是一个不错的选择。

    另外,我记得有个朋友用whoosh 作为实习项目的搜索引擎。他对它相当满意,所以我可以推荐它。

    【讨论】:

      【解决方案2】:

      您可能想要预处理文件。 假设在每个单词映射到它包含的行集时创建一个缓存,这样您就可以获取它并返回它们。

      【讨论】:

      • 不,不幸的是,完全没有索引、未处理的数据进来了。
      【解决方案3】:

      您可以获得启动线程的初始请求,以执行将文件读取到共享资源的工作,并立即向浏览器返回 200 响应。

      客户端的 Ajax 轮询器可以周期性地循环请求,并在资源中获取并显示任何新结果,直到文件被读取。

      这是一种快速而肮脏的方法,正如@slider 所说,如果您的应用非常依赖异步框架,那么对于长轮询来说,异步框架是一个更好的主意。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2022-06-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-02-23
        • 1970-01-01
        • 1970-01-01
        • 2015-09-08
        相关资源
        最近更新 更多