cleanup gevent usage

This commit is contained in:
Piper Merriam 2016-08-18 12:38:36 -06:00
parent f2eaf9ed36
commit bf42e65f0c
8 changed files with 42 additions and 28 deletions

View File

@ -1,15 +1,20 @@
import pytest
import contextlib
import tempfile
import shutil
import random
import requests
import gevent
import pytest
# This has to go here so that the `gevent.monkey.patch_all()` happens in the
# main thread.
from geth import (
import gevent
from gevent import monkey
from gevent import socket
# needed to use the requests library
monkey.patch_socket()
import requests # noqa: E402
from geth import ( # noqa: E402
LoggingMixin,
DevGethProcess,
)
@ -20,7 +25,6 @@ class GethProcess(LoggingMixin, DevGethProcess):
def get_open_port():
import socket
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind(("", 0))
s.listen(1)

View File

@ -1,8 +1,8 @@
pytest>=2.8.2
pytest-pythonpath>=0.3
tox>=1.8.0
eth-testrpc>=0.6.0
ethereum-tester-client>=0.9.0
eth-testrpc>=0.8.0
ethereum-tester-client>=1.0.0
py-geth>=1.1.0
ethereum>=1.5.2
secp256k1>=0.13.1

View File

@ -1,9 +1,11 @@
import pytest
from gevent import socket
from flaky import flaky
def get_open_port():
import socket
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind(("", 0))
s.listen(1)

View File

@ -1,5 +1,5 @@
import pytest
import socket
from gevent import socket
from web3.providers.manager import RequestManager
from web3.providers.rpc import (

View File

@ -3,12 +3,12 @@ from __future__ import absolute_import
import pkg_resources
from web3.main import Web3 # NOQA
from web3.providers.rpc import ( # NOQA
from web3.main import Web3
from web3.providers.rpc import (
RPCProvider,
TestRPCProvider,
)
from web3.providers.ipc import IPCProvider # NOQA
from web3.providers.ipc import IPCProvider
__version__ = pkg_resources.get_distribution("web3").version

View File

@ -12,7 +12,7 @@ except ImportError:
import gevent
from gevent import socket
from gevent import threading
from gevent.threading import Lock
from web3.utils.string import (
force_text,
@ -74,7 +74,7 @@ class IPCProvider(BaseProvider):
else:
self.ipc_path = ipc_path
self._lock = threading.Lock()
self._lock = Lock()
super(IPCProvider, self).__init__(*args, **kwargs)
def make_request(self, method, params):

View File

@ -1,7 +1,14 @@
import requests
# pep8: disable=E402
import gevent
from gevent import monkey
from .base import BaseProvider
monkey.patch_socket()
from .base import BaseProvider # noqa: E402
import requests # noqa: E402
class RPCProvider(BaseProvider):
@ -9,15 +16,14 @@ class RPCProvider(BaseProvider):
def __init__(self, host="127.0.0.1", port="8545", *args, **kwargs):
self.host = host
self.port = port
self.session = requests.session()
self.session.headers.update({'content-type': 'application/json'})
super(RPCProvider, self).__init__(*args, **kwargs)
def make_request(self, method, params):
request = self.encode_rpc_request(method, params)
response = self.session.post(
response = requests.post(
"http://{host}:{port}/".format(host=self.host, port=self.port),
headers={'content-type': 'application/json'},
data=request
)
@ -26,7 +32,7 @@ class RPCProvider(BaseProvider):
def is_testrpc_available():
try:
import testrpc # NOQA
import testrpc # noqa: E401
return True
except ImportError:
return False
@ -36,14 +42,16 @@ class TestRPCProvider(RPCProvider):
def __init__(self, host="127.0.0.1", port=8545, *args, **kwargs):
if not is_testrpc_available():
raise Exception("`TestRPCProvider` requires the `eth-testrpc` package to be installed")
from wsgiref.simple_server import make_server
from gevent.pywsgi import WSGIServer
from testrpc.server import application
from testrpc.testrpc import evm_reset
evm_reset()
self.server = make_server(host, port, application)
self.server = WSGIServer(
(host, port),
application,
)
self.thread = gevent.spawn(self.server.serve_forever)

View File

@ -2,10 +2,10 @@ import sys
if sys.version_info.major == 2:
integer_types = (int, long) # NOQA
integer_types = (int, long)
bytes_types = (bytes, bytearray)
text_types = (unicode,) # NOQA
string_types = (basestring, bytearray) # NOQA
text_types = (unicode,)
string_types = (basestring, bytearray)
else:
integer_types = (int,)
bytes_types = (bytes, bytearray)