哪个Cassandra Python驱动程序与aiohtp一起使用?

pnwntuvh  于 2023-08-04  发布在  Cassandra
关注(0)|答案(2)|浏览(142)

问题是哪种Cassandra Python驱动程序更适合与aiohttpweb框架一起使用。
目前,有两种可能的候选方案:
1.由DataStax提供的cassandra-driver

  1. aiocassandra
    事情是这样的,Cassandra司机似乎更受欢迎,并有更多的支持。但另一方面,它不支持asyncio(实验性不稳定实现),而asyncio对于运行aiottp web server是至关重要的。
    aiocassandra没有那么受欢迎,维护+支持也值得怀疑。
    那么,aiocassandra的性能是否比cassandra-driver好得多呢?在正常运行时间、性能和支持方面,我们应该选择哪一种呢?
jw5wzhpr

jw5wzhpr1#

cassandra-driver在项目中使用(cqlsh),cassandra的测试也是使用它编写的(dtests),因此将始终得到维护,测试良好,并与所有版本的Cassandra保持最新。
aiocassandra是cassandra-driver的 Package 器,所以它的性能可能不会有任何不同。

uz75evzq

uz75evzq2#

aiocassandra现在不是一个选项。
Github上的项目自2020年以来一直存档:
https://github.com/aio-libs/aiocassandra/issues/122
aiocqlengine是另一种选择。
它基本上是Datastax的Cassandra Python驱动程序cassandra.cqlengine.model的 Package 器。
它支持async/await:

import asyncio
import uuid import os

from aiocqlengine.models import AioModel
from aiocqlengine.query import AioBatchQuery
from aiocqlengine.session import aiosession_for_cqlengine 
from cassandra.cluster import Cluster 
from cassandra.cqlengine import columns, connection, management

class User(AioModel):
    user_id = columns.UUID(primary_key=True)
    username = columns.Text()

async def run_aiocqlengine_example():
    ...
    # Model.objects.all() and Model.all() in async way:
    print(list(await User.async_all()))
    print(list(await User.objects.filter(user_id=user_id).async_all()))

    # Model.object.update() in async way:
    await User.objects(user_id=user_id).async_update(username='updated-user1')

    # Model.objects.get() and Model.get() in async way:
    user = await User.objects.async_get(user_id=user_id)
    await User.async_get(user_id=user_id)
    print(user, user.username)

    # Model.save() in async way:
    user.username = 'saved-user1'
    await user.async_save()

    # Model.delete() in async way:
    await user.async_delete()
    ...

字符串
好像是still be maintained

相关问题