【发布时间】:2014-07-18 07:21:12
【问题描述】:
我正在尝试在 Python 中发出异步 HTTP 请求。我使用 requests - 这非常好 - 它不提供异步可能性。
每次我想发送一个 HTTP 请求时,我都会启动一个新线程。它正确执行并且应该在主线程中返回响应,以便我可以执行回调方法。
我目前正在使用这样的线程模块:
class MyConnection
# ...
def make_request(self):
# Use requests lib here
response = requests.request(...)
self.receive_response(response)
def receive_response(self):
# process response here because it is my callback method
def start(self):
thread = threading.Thread(target=self.make_resquest)
thread.start()
一切正常,但方法 receive_response 应该在主线程中调用,而不是我在 start 方法中启动的线程。怎样才能回到主线程执行receive_response方法?
非常感谢您的帮助!
【问题讨论】:
-
此时主线程在做什么?
-
你可能还想看看这个问题:stackoverflow.com/questions/18989446/…
-
如果您在带有事件循环的 GUI 环境中工作,您还可以查看以下内容:stackoverflow.com/questions/270648/…
-
主线程是一系列 python 脚本行(打印和计算)以及其他独立的 HTTP 请求。当我的请求完成后,我希望我的主线程在回调中返回,执行它,然后继续执行脚本行和其他独立请求
-
我认为你最好的选择是我发布的第一个问题。在 GUI 环境中,已经有一个事件队列设置,您可以将其放入其中。如果您的主线程很忙,您所能做的就是让它不时检查待处理任务的队列。另一种选择是让主线程产生一个辅助线程来完成所有工作并启动所有作业。那么主线程只是等待处理响应?
标签: python multithreading