switch away from monkeypatching

This commit is contained in:
Piper Merriam 2016-08-30 11:19:58 -06:00
parent 629a6885c1
commit aaa3facd71
3 changed files with 25 additions and 25 deletions

View File

@ -6,15 +6,8 @@ import random
import pytest
import gevent
from gevent import monkey
from gevent import socket
# needed to use the requests library
monkey.patch_socket()
monkey.patch_select()
import requests # noqa: E402
from geth import ( # noqa: E402
LoggingMixin,
DevGethProcess,
@ -37,10 +30,12 @@ def get_open_port():
def wait_for_http_connection(port, timeout=60):
with gevent.Timeout(timeout):
while True:
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.timeout = 1
try:
requests.post("http://127.0.0.1:{0}".format(port))
except requests.ConnectionError:
gevent.sleep(0.1)
s.connect(('127.0.0.1', port))
except (socket.timeout, ConnectionRefusedError):
gevent.sleep(random.random())
continue
else:
break

View File

@ -26,9 +26,9 @@ setup(
include_package_data=True,
install_requires=[
"pysha3>=0.3",
"requests>=2.10.0",
"rlp>=0.4.6",
"gevent>=1.1.1",
"geventhttpclient>=1.3.1",
"ethereum-abi-utils>=0.2.1",
"pysha3>=0.3",
],

View File

@ -1,18 +1,12 @@
import contextlib
import gevent
from gevent import monkey
monkey.patch_socket()
monkey.patch_select()
from geventhttpclient import HTTPClient
from .base import BaseProvider # noqa: E402
import requests # noqa: E402
class RPCProvider(BaseProvider):
def __init__(self, host="127.0.0.1", port="8545", *args, **kwargs):
self.host = host
self.port = port
@ -20,14 +14,25 @@ class RPCProvider(BaseProvider):
super(RPCProvider, self).__init__(*args, **kwargs)
def make_request(self, method, params):
request = self.encode_rpc_request(method, params)
response = requests.post(
"http://{host}:{port}/".format(host=self.host, port=self.port),
headers={'content-type': 'application/json'},
data=request
from web3 import __version__ as web3_version
request_data = self.encode_rpc_request(method, params)
request_user_agent = 'Web3.py/{version}/{class_name}'.format(
version=web3_version,
class_name=type(self),
)
client = HTTPClient(
host=self.host,
port=self.port,
headers={
'Content-Type': 'application/json',
'User-Agent': request_user_agent,
},
)
with contextlib.closing(client):
response = client.post('/', body=request_data)
response_body = response.read()
return response.text
return response_body
def is_testrpc_available():