Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asynchronous PyQT Quamash环路和开放式连接';ValueError:循环参数必须与Future';_Asynchronous_Pyqt5_Rethinkdb_Python Asyncio - Fatal编程技术网

Asynchronous PyQT Quamash环路和开放式连接';ValueError:循环参数必须与Future';

Asynchronous PyQT Quamash环路和开放式连接';ValueError:循环参数必须与Future';,asynchronous,pyqt5,rethinkdb,python-asyncio,Asynchronous,Pyqt5,Rethinkdb,Python Asyncio,我在pyqt上使用quamash循环(async)和其他模块,通过async连接到数据库。如果我不使用quamash,则重新思考DB模块将以完美的方式连接。但是当使用quamash循环时,尽管将其放在每个关键参数循环上,它仍然会失败: File "/home/dpineda/.virtualenvs/dragoncharts/lib/python3.6/site-packages/rethinkdb/asyncio_net/net_asyncio.py", line 148, in conn

我在pyqt上使用quamash循环(async)和其他模块,通过async连接到数据库。如果我不使用quamash,则重新思考DB模块将以完美的方式连接。但是当使用quamash循环时,尽管将其放在每个关键参数循环上,它仍然会失败:

  File "/home/dpineda/.virtualenvs/dragoncharts/lib/python3.6/site-packages/rethinkdb/asyncio_net/net_asyncio.py", line 148, in connect
    loop=self._io_loop)
  File "/usr/local/lib/python3.6/asyncio/streams.py", line 76, in open_connection
    lambda: protocol, host, port, **kwds)
  File "/usr/local/lib/python3.6/asyncio/base_events.py", line 731, in create_connection
    yield from tasks.wait(fs, loop=self)
  File "/usr/local/lib/python3.6/asyncio/tasks.py", line 311, in wait
    fs = {ensure_future(f, loop=loop) for f in set(fs)}
  File "/usr/local/lib/python3.6/asyncio/tasks.py", line 311, in <setcomp>
    fs = {ensure_future(f, loop=loop) for f in set(fs)}
  File "/usr/local/lib/python3.6/asyncio/tasks.py", line 514, in ensure_future
    raise ValueError('loop argument must agree with Future')
ValueError: loop argument must agree with Future

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/local/lib/python3.6/asyncio/events.py", line 127, in _run
    self._callback(*self._args)
  File "/home/dpineda/Proyectos/TaskTools/tasktools/taskloop.py", line 40, in renew_quamash
    raise task.result()
  File "/home/dpineda/Proyectos/TaskTools/tasktools/taskloop.py", line 11, in coromask
    obtained=await coro(*args)
  File "/home/dpineda/Proyectos/DragonCharts/dragoncharts/qtgui/interface.py", line 382, in updates
    await self.read_stations_queue()
  File "/home/dpineda/Proyectos/DragonCharts/dragoncharts/qtgui/interface.py", line 257, in read_stations_queue
    conn=await self.connect_rethinkdb()
  File "/home/dpineda/Proyectos/DragonCharts/dragoncharts/qtgui/interface.py", line 315, in connect_rethinkdb
    conn=await r.async_connect()
  File "/home/dpineda/Proyectos/NetworkTools/networktools/dbs/rethinkdb.py", line 43, in async_connect
    **kwargs)
  File "/home/dpineda/.virtualenvs/dragoncharts/lib/python3.6/site-packages/rethinkdb/asyncio_net/net_asyncio.py", line 293, in reconnect
    return (yield from self._instance.connect(timeout))
  File "/home/dpineda/.virtualenvs/dragoncharts/lib/python3.6/site-packages/rethinkdb/asyncio_net/net_asyncio.py", line 156, in connect
    (self._parent.host, self._parent.port, str(err)))
rethinkdb.errors.ReqlDriverError: Could not connect to atlas.csn.uchile.cl:28015. Error: loop argument must agree with Future
文件“/home/dpineda/.virtualenvs/dragocharts/lib/python3.6/site packages/referencedb/asyncio\u net/net\u asyncio.py”,第148行,在connect中
循环=自身。_io_循环)
文件“/usr/local/lib/python3.6/asyncio/streams.py”,第76行,开放连接
lambda:协议、主机、端口,**kwds)
文件“/usr/local/lib/python3.6/asyncio/base\u events.py”,第731行,位于create\u connection中
从任务中获得收益。等待(fs,loop=self)
文件“/usr/local/lib/python3.6/asyncio/tasks.py”,第311行,正在等待
fs={确保集合(fs)中f的未来(f,loop=loop)}
文件“/usr/local/lib/python3.6/asyncio/tasks.py”,第311行,在
fs={确保集合(fs)中f的未来(f,loop=loop)}
文件“/usr/local/lib/python3.6/asyncio/tasks.py”,第514行,以供将来使用
raise VALUERROR('循环参数必须与Future'一致')
ValueError:循环参数必须与Future一致
在处理上述异常期间,发生了另一个异常:
回溯(最近一次呼叫最后一次):
文件“/usr/local/lib/python3.6/asyncio/events.py”,第127行,运行
self.\u回调(*self.\u参数)
文件“/home/dpineda/Proyectos/TaskTools/TaskTools/taskloop.py”,第40行,在renew_quamash中
提出任务。结果()
coromask中的文件“/home/dpineda/Proyectos/TaskTools/TaskTools/taskloop.py”,第11行
已获取=等待coro(*args)
文件“/home/dpineda/Proyectos/DragonCharts/DragonCharts/qtgui/interface.py”,第382行,在更新中
等待self.read\u stations\u queue()
文件“/home/dpineda/Proyectos/DragonCharts/DragonCharts/qtgui/interface.py”,第257行,在读取队列中
conn=等待自我连接
文件“/home/dpineda/Proyectos/DragonCharts/DragonCharts/qtgui/interface.py”,第315行,在connect\u数据库中
conn=wait r.async_connect()
文件“/home/dpineda/Proyectos/NetworkTools/NetworkTools/dbs/referencedb.py”,第43行,异步连接
**kwargs)
文件“/home/dpineda/.virtualenvs/dragoncharts/lib/python3.6/site packages/referencedb/asyncio\u net/net\u asyncio.py”,第293行,重新连接
返回值(从self.\u instance.connect获得的收益(超时))
文件“/home/dpineda/.virtualenvs/dragoncharts/lib/python3.6/site packages/referencedb/asyncio\u net/net\u asyncio.py”,第156行,在connect中
(self.\u parent.host、self.\u parent.port、str(err)))
RejectionDB.errors.ReqlDriverError:无法连接到atlas.csn.uchile.cl:28015。错误:循环参数必须与Future一致
所以,到目前为止,我的技能还不足以控制它,因为我认为quamash和asyncio库之间存在兼容性问题

或者,有什么解决办法


谢谢

确保将quamash循环设置为默认全局循环:

from quamash import QEventLoop

loop = QEventLoop(app)
asyncio.set_event_loop(loop)
单靠它很有可能会有所帮助

但如果没有,请将代码段放在脚本顶部,使其在任何异步模块导入之前执行

Upd:

未检查它是否有效,但您可以尝试使用获取同时具有事件循环属性的类:

import asyncio
from quamash import QEventLoop

AEventLoop = type(asyncio.get_event_loop())


class QEventLoopPlus(QEventLoop, AEventLoop):
    pass


loop = QEventLoopPlus(app)
asyncio.set_event_loop(loop)

是的,我确实这样做了。问题是,在最后,QEventLoop quamash还没有实现像asyncio源代码上显示的AbstracLoop那样的create_连接方法。所以,我想我必须在quamash循环上实现一个hinherited类:(@DavidPinedaOsorio我更新了答案,可能会有帮助。酷!也许可以,看起来是这样。我还读到了关于信号插槽的内容,它具有与我需要的类似的功能