我主要是一名go开发人员,刚刚开始用python编写应用程序。下面是go中的一个类似实现:
https://github.com/tejzpr/ordered-concurrently
如何在python中实现这一点?
这就是我到目前为止所做的:
while True:
response = iot_sensor.receive()
future = executor.submit(response) # get the future obj from the submission
queue.put_nowait(future) # asyncio.queue(): add the future object to the queue
上面的代码获取未来并将其添加到 asyncio.queue
. 下面的代码执行队列处理
async def run_queue():
print('init queue processor')
try:
while True:
if not queue.empty():
al = queue.get_nowait() # get the queue (futures)
res = al.result() # blocking call. i.e., wait for the result from the future before moving on to the next future
executor.submit(write_to_es, res)
except Exception as e:
print(e)
以上内容有待进一步研究 al.result()
[ asyncio.queue()
及 al.result()
执行使代码并发运行,并按照提交的顺序处理结果],然后再次提交给并发期货,将其写入elasticsearch)。
我有点能让它按我所希望的方式运行。。但是,它太慢了。。比在主进程中运行整个过程慢得多。
暂无答案!
目前还没有任何答案,快来回答吧!