将Go以太坊作为子流程运行

py-geth的Python项目详细描述


Pygeth

Build StatusDocumentation StatusPyPi versionPyPi downloads

作为子进程运行geth的python包装器

系统依赖性

此库要求存在geth可执行文件。

安装

安装

pip install py-geth

快速启动

运行连接到主网的geth

>>>fromgethimportLiveGethProcess>>>geth=LiveGethProcess()>>>geth.start()

或者是一家私人的本地连锁店。这些要求你给他们一个 名字。

>>>fromgethimportDevGethProcess>>>geth=DevGethProcess('testing')>>>geth.start()

默认情况下,DevGethProcess在默认情况下设置测试链 datadirgeth使用。如果你想改变位置 对于这些测试链,可以指定替代的base_dir

>>>geth=DevGethProcess('testing','/tmp/some-other-base-dir/')>>>geth.start()

每个实例都有一些方便的属性。

>>>geth.data_dir"~/.ethereum">>>geth.rpc_port8545>>>geth.ipc_path"~/.ethereum/geth.ipc">>>geth.accounts['0xd3cda913deb6f67967b99d67acdfa1712c293601']>>>geth.is_aliveFalse>>>geth.is_runningFalse>>>geth.is_stoppedFalse>>>geth.start()>>>geth.is_aliveTrue# indicates that the subprocess hasn't exited>>>geth.is_runningTrue# indicates that `start()` has been called (but `stop()` hasn't)>>>geth.is_stoppedFalse>>>geth.stop()>>>geth.is_aliveFalse>>>geth.is_runningFalse>>>geth.is_stoppedTrue

在测试时,很高兴看到 geth进程。{TT8}$提供了一个可用于 将stdout和stderr输出记录到日志文件中。

>>>fromgethimportLoggingMixin,DevGethProcess>>>classMyGeth(LoggingMixin,DevGethProcess):...pass>>>geth=MyGeth()>>>geth.start()

所有日志将在当前的./logs/中写入日志文件 目录。

基础的geth进程可能需要额外的时间来打开rpc 或者IPC连接,如果需要生成 达格。您可以使用以下接口来查询 准备好了。

>>>geth.is_rpc_readyTrue>>>geth.wait_for_rpc(timeout=30)# wait up to 30 seconds for the RPC connection to open>>>geth.is_ipc_readyTrue>>>geth.wait_for_ipc(timeout=30)# wait up to 30 seconds for the IPC socket to open>>>geth.is_dag_generatedTrue>>>geth.is_miningTrue>>>geth.wait_for_dag(timeout=600)# wait up to 10 minutes for the DAG to generate.TheDAGfunctionalitycurrentlyonlyappliestotheDAGforepoch0.

安装特定版本的geth

This feature is experimental and subject to breaking changes.

以下任何版本的geth都可以使用 py-geth在列出的平台上。

  • v1.5.6(Linux/OSX)
  • v1.5.7(Linux/OSX)
  • v1.5.8(Linux/OSX)
  • v1.5.9(Linux/OSX)
  • v1.6.0(Linux/OSX)
  • v1.6.1(Linux/OSX)
  • v1.6.2(Linux/OSX)
  • v1.6.3(Linux/OSX)
  • v1.6.4(Linux/OSX)
  • v1.6.5(Linux/OSX)
  • v1.6.6(Linux/OSX)
  • v1.6.7(Linux/OSX)
  • v1.7.0(Linux/OSX)
  • v1.7.2(Linux/OSX)
  • v1.8.1(Linux/OSX)

可以通过命令行进行安装:

$ python -m geth.install v0.4.12

或者使用install_geth函数从python获取。

>>>fromgethimportinstall_geth>>>install_geth('v1.7.0')

安装的二进制文件可以在$HOME/.py-geth目录中找到, 在你的主目录下。v1.7.0二进制文件位于 $HOME/.py-geth/geth-v1.7.0/bin/geth

关于DevGethProcess

DevGethProcess是为了方便测试而设计的。在那里面 考虑到这一点,它的预配置如下。

  • 创建并分配一个账户10亿以太。
  • 所有api都在rpcipc接口上启用。
  • 帐户0已解锁
  • 网络配置为不查找或连接任何对等方。
  • 使用1234networkid
  • 详细设置为5(调试)
  • 使用单个线程启用挖掘。
  • rpc接口尝试将绑定到8545,但将找到一个打开的端口 如果这个端口不可用。
  • devp2p接口尝试将绑定到30303,但会发现 端口(如果此端口不可用)。

有问题

如果运行时启用了mining(这是 DevGethProcess然后可能需要生成DAG 手动操作。如果你没有,那么它会在你第一次 运行进程,这需要一段时间。

手动生成:

$ geth makedag 0 ~/.ethash

这在像travis ci这样的ci环境中尤其重要 在生成过程中,进程可能会超时。

发展

克隆存储库,然后运行:

pip install -e . -r requirements-dev.txt

运行测试

您可以使用以下命令运行测试:

py.test tests

或者您可以安装tox来运行完整的测试套件。

释放

要将降价自述转换为正确的 在pypi上正确呈现的格式。

对于类似Debian的系统:

apt install pandoc

或在OSX上:

brew install pandoc

发布新版本:

make release bump=$$VERSION_PART_TO_BUMP$$
如何颠簸

此repo的版本格式为 稳定,{major}.{minor}.{patch}-{stage}.{devnum}表示不稳定 (stage可以是alpha或beta)。

若要在行中发布下一个版本,请指定要凹凸的部分,如 make release bump=minormake release bump=devnum

如果您是beta版本,make release bump=stage将切换到 马厩。

若要在当前版本稳定时发布不稳定版本,请指定 新版本显式地 make release bump="--new-version4.0.0-alpha.1 devnum"

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java如何使用“Wed,01 Jul 2015 17:32:41 EDT”解析字符串   java Storm apache升级(1.0.0到2.0.0)   java类驻留在不同的目录中,而不是包指定的目录。为什么?   将Java中的图像缩放到非常小的维度   java如何通过子文档从自定义方面访问ElasticSearch parentdoc字段   java如何在RationalSoftwareArchitect中使用findbugs?   Java中的事件提升处理   java值被添加到arrayList的所有索引中,而不是在“”时添加到最后一个索引中。正在使用arraylist的add()方法   JFrame中的java JPanel派生类   java如何用循环和异步方法模拟类   java Android阻止可绘制背景超出视图范围   为客户排序Java阵列   java Apache poi如何将工作表设置为枚举位置值属性?   java Rhino在使用自定义类参数调用javascript函数时出错   java格式化日期从年月日到年月日   spring如何修复java。lang.illegalargumentexception在此特定场景中是否尝试创建具有null实体的合并事件?   java如何创建更好的对象