gpt4 book ai didi

python - Tornado 异步调用一个函数

转载 作者:太空狗 更新时间:2023-10-29 22:16:27 25 4
gpt4 key购买 nike

我正在使用 Python + Tornado 制作一个 Web 应用程序,它基本上为用户提供文件服务。我没有数据库。

如果文件可用,则直接获取并提供这些文件,如果不可用,则即时生成。

我希望以异步方式为客户端提供服务,因为一些文件可能已经可用,而其他文件需要生成(因此他们需要等待,我不希望他们阻止其他用户)。

我有一个管理文件的选择或生成的类,我只需要从 Tornado 调用它。

实现该目标的最佳方式(对 CPU 和 RAM 的效率最高)是什么?我应该使用线程吗?子进程?一个简单的gen.Task like this one

此外,我希望我的实现能够在 Google App Engines 上运行(我认为它们不允许生成子进程?)。

我对异步网络服务还比较陌生,所以欢迎任何帮助。

最佳答案

我找到了问题的答案:genTask 示例确实是实现异步调用的最佳方式,这是因为该示例确实使用了 Python 协程,乍一看我不明白,因为我认为 yield 只是用来为生成器返回一个值。

具体例子:

class MyHandler(tornado.web.RequestHandler):

@asynchronous
@gen.engine
def get(self):
response = yield gen.Task(self.dosomething, 'argument')

这里重要的是两件事的结合:

Python 中使用协程的异步调用的典型示例:

response = yield non_blocking_func(**kwargs)

关于python - Tornado 异步调用一个函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13296763/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com