为Django集成的cryptoassets.core库
项目描述
Cryptoassets库集成于Django
此包提供了cryptoassets.core比特币和加密资产框架与Django网络框架的集成。
功能
使用Django settings.py 配置机制设置 cryptoassets.core
Django管理命令映射cryptoassets辅助服务
Django原生日志记录
Django事件调度集成
在Django内部设置SQLAlchemy会话和数据库冲突解决
使用方法
将 cryptoassets.django 添加到 settings.py 中的Django应用程序列表
INSTALLED_APPS = ( 'cryptoassets.django', )
将 cryptoassets.core配置 作为Python字典添加到Django settings.py 模块中的 CRYPTOASSETS 变量。
示例 settings.py
# TESTNET settings CRYPTOASSETS = { # It is recommended to use separate database for cryptoassets, # but you can share the database with Django as well. # In any case, cryptoassets # will use a separate db connection. # cryptoassets.django does not read the existing DATABASES setting. # Configure the connection using SQLAlchemy syntax: # http://cryptoassetscore.readthedocs.org/en/latest/config.html#database "database": { "url": "postgresql://localhost/cryptoassets", "echo": False, }, # Configure block.io API service with Bitcoin testnet # (let's not play around with real Bitcoins yet) "coins": { "btc": { "backend": { "class": "cryptoassets.core.backend.blockio.BlockIo", "api_key": "923f-xxxx-yyyy-zzzz", "network": "btctest", "pin": "foobar123", # Cryptoassets helper process will use this UNIX named pipe to communicate # with bitcoind "walletnotify": { "class": "cryptoassets.core.backend.sochainwalletnotify.SochainWalletNotifyHandler", "pusher_app_key": "e9f5cc20074501ca7395" }, } }, }, # Bind cryptoassets.core event handler to Django dispacth wrapper "events": { "django": { "class": "cryptoassets.core.event.python.InProcessEventHandler", "callback": "cryptoassets.django.incoming.handle_tx_update" } }, # Start simple status at port 9001 for diagnostics "status_server": { "ip": "127.0.0.1", "port": 9001 } }
初始化数据库
运行
python manage.py cryptoassets_initialize_database
这将构建配置加密货币的数据库表。
这是Django管理命令包装器cryptoassets-initialize-database。
启动cryptoassets辅助服务
启动辅助服务。此独立进程运行,连接到API和网络,监听传入的交易,广播发出的交易。
运行
python manage.py cryptoassets_helper_service
更多信息请参阅 辅助服务命令。
处理传入的交易
确保按照上述说明在 CRYPTOASSETS 设置中配置了 walletnotify。它将传入的进程间通信转换为Django事件。
在应用程序代码中通过 txupdate 信号抓取传入的交易
from cryptoassets.django.signals import txupdate from django.dispatch import receiver @receiver(txupdate) def txupdate_received(event_name, data, **kwargs): """ Received transaction update from cryptoassets.core. """ if data.get("transaction_type") != "deposit": # We are only interest updates on incoming transctions return transaction_hash = data["txid"] value = data['amount'] address = data['address'] confirmations = int(data.get('confirmations', -1)) logger.info("Transaction update received: %s BTC:%s address:%s confirmations:%d", transaction_hash, value, address, confirmations)
处理程序在 加密资产辅助服务 进程内执行。
访问加密资产数据
访问数据库模型
要获取对数据库模型的访问权限
from cryptoassets.django.app import get_cryptoassets cryptoassets = get_cryptoassets() BitcoinWallet = cryptoassets.coins.get("btc").coin_description.Wallet
执行数据库查询
所有数据库访问都通过一个单独的SQLAlcemy会话进行,该会话由 数据库事务冲突解析器 包装。
为了方便,提供了 cryptoassets.django.assetsdb.managed_transaction() 装饰器
示例代码
from cryptoassets.django.app import get_cryptoassets from cryptoassets.django import assetdb def get_wallet(session): """Return the master shared wallet used to receive payments. """ cryptoassets = get_cryptoassets() BitcoinWallet = cryptoassets.coins.get("btc").coin_description.Wallet wallet = BitcoinWallet.get_or_create_by_name("default", session) return wallet def create_new_receiving_address(label): @assetdb.managed_transaction def tx(session): wallet = get_wallet(session=session) account = wallet.get_or_create_account_by_name("my account") session.flush() # account id gets written inside commit addr = wallet.create_receiving_address(account, label) logging.info("Created receiving address %s", addr.address) address = addr.address return address return tx()
其余部分请参阅 模型API 和 SQLAlchemy。
其他
示例Django应用程序
cryptoassets.core教程
将辅助服务作为系统服务运行
为了自动启动/停止和其他功能,使用类似 systemd 或 supervisord 来管理 python manage.py cryptoassets_helper_service。
项目详情
cryptoassets.django-0.1.zip的散列值
算法 | 散列摘要 | |
---|---|---|
SHA256 | 875aeaeeb12f28742a1ebba10c6c98f57a7f70a87e95caaf73140908be65a297 |
|
MD5 | 6e60f15673f7fb045ee8fc61519c460e |
|
BLAKE2b-256 | 19743c33c47e902556e6a31c0e271a787680b700ee856c4c6b1e0c93efe06716 |