Python 扭曲的 Reactor 类

标签 python twisted

装饰器的意义是什么

 @reactor.callWhenRunning,
 @results_deferred.addCallback
 @results_deferred.addErrback.

还有什么是延迟字符串,例如在

 twisted.internet.utils.getProcessOutput()

返回延迟字符串这里到底发生了什么?

我是 twisted 的新手,因此这可能是一个非常简单的问题,但阅读 twisted 文档对我帮助不大

最佳答案

在正常的编程实践中你会这样做

db = Database.connect()
result = db.getResult()
processResult(result)

现在,根据您的数据库和网络,这 3 个语句可能需要一毫秒到几秒不等。

几十年来,我们一直采用这种方式进行编程,在大多数情况下,我们可以接受“等待”。

但有时您的程序不能只等待结果。你会开始想,哎呀,在等待结果的同时我可以做很多其他事情。也许打印一个输出,或者处理一个函数,或者只是快速检查套接字等等。

输入 Twisted 和 Deferred。

无需等待结果,在 Twisted 中,当调用特殊方法时,您将获得 Deferred。您将向此延迟添加一个回调函数,这意味着,当您有结果/答案时调用此函数。

deferredResult = db.nonBlockingGetResult()
deferredResult.addCallback(processOutput)

一旦执行了第一个语句,它就会返回“something”。那个东西是 Deferred。那里没有阻塞,没有等待。并向此 Deferred 添加回调 processOutput,它在 deferred 被“触发”时调用 - 即 result 已准备就绪。

HTH

关于Python 扭曲的 Reactor 类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2433616/

相关文章:

python - 如何在给定时区运行 python(从外部更改时区)?

python - Asyncmongo 和 Twisted

python - 如何设计一个扭曲的解决方案来通过读取特定部分来下载文件?

python - 在不同的列上连接数据帧

python - 使用 Raspberry pi3 将传感器数据保存在 CSV 文件中

python : Get a complete list of external modules imported by my script and their version

python - 在 main.py/understanding 范围内调用方法

python - Twisted 在连接关闭之前不发送任何内容

python - 我如何编写与扭曲服务器通信的东西?

python - 在 Python 中为 MySQL 转义 unicode 字符串(避免异常。UnicodeEncodeError)