小编vad*_*vad的帖子

带有asyncio的惰性迭代器(生成器)

我有一个像这样的阻塞,非异步代码:

def f():
    def inner():
        while True:
            yield read()
    return inner()
Run Code Online (Sandbox Code Playgroud)

使用此代码,调用者可以选择何时停止函数以生成数据.如何将此更改为异步?此解决方案不起作用:

async def f():
    async def inner():
        while True:
            yield await coroutine_read()
    return inner()
Run Code Online (Sandbox Code Playgroud)

...因为 yield不能用于async def功能.如果我asyncinner()签名中删除,我不能再使用await了.

python asynchronous python-asyncio

8
推荐指数
1
解决办法
3685
查看次数

在Django中与附件异步发送电子邮件

我使用下面的代码发送带有pdf附件的电子邮件.但是,这是一个错误 - "断言没有内容".我不确定为什么会这样.我可以同步发送带有pdf的电子邮件,也可以发送没有pdf的电子邮件异步.(使用Django 1.3)

from django.core.mail import EmailMultiAlternatives
import threading
from django.core.mail import send_mail

class EmailThread(threading.Thread):
    def __init__(self, subject, body, from_email, recipient_list, fail_silently, html,pdf):
        self.subject = subject
        self.body = body
        self.recipient_list = recipient_list
        self.from_email = from_email
        self.fail_silently = fail_silently
        self.html = html
        self.pdf = pdf
        threading.Thread.__init__(self)

    def run(self):
        msg = EmailMultiAlternatives(self.subject, self.body, self.from_email, self.recipient_list)
        msg.attach('ticket.pdf',self.pdf,'application/pdf')
        if self.html:
            msg.attach_alternative(self.html, "text/html")
        msg.send(self.fail_silently)


def send_mail(subject, body, from_email, recipient_list, fail_silently=True, html=None,pdf=None, *args, **kwargs):
    EmailThread(subject, body, from_email, recipient_list, fail_silently, html, pdf).start()
Run Code Online (Sandbox Code Playgroud)

email django

5
推荐指数
1
解决办法
1206
查看次数

PostgreSQL 9.2:citext上的GIN索引[]

我需要加快此查询的速度:

SELECT * FROM mytable 
WHERE 'value' = ANY("citext_array_col") LIMIT 1;
Run Code Online (Sandbox Code Playgroud)

citext_array_colcitext数组在哪里。我试图创建一个运算符类:

CREATE OPERATOR CLASS gin__citext_ops
FOR TYPE citext[] USING gin
AS

        OPERATOR        6       = (anyarray, anyarray),
        FUNCTION        1       citext_cmp (citext, citext),
        FUNCTION        2       ginarrayextract(anyarray, internal, internal),
        FUNCTION        3       ginqueryarrayextract(anyarray, internal, smallint, internal, internal, internal, internal),
        FUNCTION        4       ginarrayconsistent(internal, smallint, anyarray, integer, internal, internal, internal, internal),
        STORAGE         citext;
Run Code Online (Sandbox Code Playgroud)

我可以使用此运算符类创建GIN索引,但它没有用(set enable_seqscan = off计划程序仍使用顺序扫描)。我不知道什么是ginqueryarrayextract()&co。确实,没有关于此的文档。

我发现的是GIN索引的intarray扩展,但是代码在C中,而且我对PG C扩展不太熟悉...

有没有更聪明的方法来为此查询创建索引?也许使用文本支持功能?

postgresql indexing

3
推荐指数
1
解决办法
1014
查看次数

与ElasticSearch匹配的精确文档

我需要完全查询一组"短文档".例:

文件:

  1. {"name":"John Doe","alt":"John W Doe"}
  2. {"name":"我的朋友John Doe","alt":"John A Doe"}
  3. {"name":"John","alt":"Susy"}
  4. {"name":"Jack","alt":"John Doe"}

预期成绩:

  1. 如果我搜索"John Doe",我希望得分1比得分2和4大得多
  2. 如果我搜索"JohnDoé",就像上面一样
  3. 如果我搜索"John",我想得到3(完全匹配比名称和alt中的重复更好)

ES有可能吗?我怎样才能实现这一目标?我尝试提升"名称",但我找不到如何与文档字段完全匹配,而不是在其中搜索.

lucene elasticsearch

2
推荐指数
1
解决办法
2030
查看次数