我的python应用程序使用扭曲的,并在引擎盖下使用cassandra python驱动程序。Cassandra驱动程序可以使用cassandra.io.twistedreactor.TwistedConnection
作为连接类,并将其用作查询方式。
TwistedConnection
类使用timer和reactor.callLater
检查查询任务是否超时。
问题是当我使用cassandra (cassandra.cqlengine.models.Model
)查询时。
from cassandra.cqlengine import columns
from cassandra.cqlengine.models import Model
# ORM for user settings
class UserSettings(Model):
userid = columns.Text(primary_key=True)
settings = columns.Text()
# Function registered with autobahn/wamp
def worker():
userid = "96c5d462-cf7c-11e7-b567-b8e8563d0920"
def _query():
# This is a blocking call, internally calling twisted reactor
# to collect the query result
setting = model.UserSettings.objects(userid=userid).get()
return json.loads(setting.settings)
threads.deferToThread(_query)
在twisted.trial
单元测试中运行时。使用上述代码的测试总是失败
故障: twisted.trial.util.DirtyReactorAggregateError:反应器不干净。 DelayedCalls:(将twisted.internet.base.DelayedCall.debug = True设置为debug)
但是,在使用此代码的高速公路工人中,工作正常。
TwistedConnection的cassandra驱动程序代码一直在调用callLater,我找不到一种方法来查找这些调用是否仍在等待,因为这些调用隐藏在TwistedLoop
类中。
问题:
reactor.callLater
)产生的reactor.callLater
。发布于 2018-10-23 01:31:34
我的理解是:
.filter
函数吗?正如文档 setting = model.UserSettings.objects.filter(userid=userid).get()
中提到的https://stackoverflow.com/questions/47434880
复制相似问题