简体   繁体   English

使用卡桑德拉作为芹菜结果后端

[英]Using cassandra as celery result backend

I'm trying to use cassandra as result backend.Here is the celery app: 我正在尝试使用cassandra作为结果后端。这是celery应用程序:

from __future__ import absolute_import
from celery import Celery

app = Celery('proj',
        broker='amqp://',
        backend='cassandra',
        include=['proj.tasks'])

# Optional configuration, see the application user guide.
app.conf.update(
    CASSANDRA_SERVERS = ["localhost:9160"],
    CASSANDRA_KEYSPACE = "celery",
    CASSANDRA_COLUMN_FAMILY = "tasks_result",
    CASSANDRA_READ_CONSISTENCY = "ONE",
    CASSANDRA_WRITE_CONSISTENCY = "ONE",
    CASSANDRA_OPTIONS = { 
        'timeout': 10, 
        'max_retries': 1
    }   
    )   

if __name__ == '__main__':
    app.start()

Since, celery's cassandra backend uses pycassa, I created keyspace - 'celery' and table - 'tasks_result' using pycassaShell. 由于celery的cassandra后端使用pycassa,因此我使用pycassaShell创建了键空间-“ celery”和表-“ tasks_result”。 The problem is result stored in 'tasks_result' table has hex-decimal values as shown: 问题是结果存储在“ tasks_result”表中的结果具有十六进制小数,如下所示:

 key                                                                        | column1   | value
----------------------------------------------------------------------------+-----------+--------------------------------------------
 0x65333336633966622d323937612d346535612d613164352d353333613765663962613663 |  0x6368696c6472656e |                             0x80025d71012e
 0x65333336633966622d323937612d346535612d613164352d353333613765663962613663 | 0x646174655f646f6e65 | 0x323031342d30322d32355431363a30343a34355a
 0x65333336633966622d323937612d346535612d613164352d353333613765663962613663 |    0x726573756c74 |                               0x80024b092e
 0x65333336633966622d323937612d346535612d613164352d353333613765663962613663 |    0x737461747573 |                           0x53554343455353
 0x65333336633966622d323937612d346535612d613164352d353333613765663962613663 | 0x74726163656261636b |                                 0x80024e2e

How to retrieve actual data stored? 如何检索存储的实际数据? Thanks in advance.. 提前致谢..

When you created your ColumnFamily (aka table) define the KeyValidation and ColumnValidation to be UTF8Type. 创建ColumnFamily(又名表)时,将KeyValidation和ColumnValidation定义为UTF8Type。 Then use pycassa to read from it and it should be fine. 然后使用pycassa读取它,应该没问题。 By default Cassandra stores things in binary. 默认情况下,Cassandra用二进制存储事物。 Based on the table definition the translation happens by the query interface. 根据表定义,翻译由查询界面进行。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM