Skip to content

Commit 14a4cd9

Browse files
committed
Add TwistedConnection as another default connection option
1 parent 283bdfd commit 14a4cd9

File tree

2 files changed

+22
-7
lines changed

2 files changed

+22
-7
lines changed

cassandra/cluster.py

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -98,7 +98,7 @@
9898

9999
try:
100100
from cassandra.io.twistedreactor import TwistedConnection
101-
except ImportError:
101+
except DependencyException:
102102
TwistedConnection = None
103103

104104
try:
@@ -173,6 +173,13 @@ def _try_asyncore_import():
173173
except DependencyException as e:
174174
return (None, e)
175175

176+
def _try_twisted_import():
177+
try:
178+
from cassandra.io.twistedreactor import TwistedConnection
179+
return TwistedConnection, None
180+
except DependencyException as e:
181+
return None, e
182+
176183
def _connection_reduce_fn(val,import_fn):
177184
(rv, excs) = val
178185
# If we've already found a workable Connection class return immediately
@@ -185,7 +192,7 @@ def _connection_reduce_fn(val,import_fn):
185192

186193
log = logging.getLogger(__name__)
187194

188-
conn_fns = (_try_gevent_import, _try_eventlet_import, _try_libev_import, _try_asyncore_import)
195+
conn_fns = (_try_gevent_import, _try_eventlet_import, _try_libev_import, _try_asyncore_import, _try_twisted_import)
189196
(conn_class, excs) = reduce(_connection_reduce_fn, conn_fns, (None,[]))
190197
if not conn_class:
191198
raise DependencyException("Unable to load a default connection class", excs)

cassandra/io/twistedreactor.py

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -22,11 +22,19 @@
2222
from threading import Thread, Lock
2323
import weakref
2424

25-
from twisted.internet import reactor, protocol
26-
from twisted.internet.endpoints import connectProtocol, TCP4ClientEndpoint, SSL4ClientEndpoint
27-
from twisted.internet.interfaces import IOpenSSLClientConnectionCreator
28-
from twisted.python.failure import Failure
29-
from zope.interface import implementer
25+
from cassandra import DependencyException
26+
try:
27+
from twisted.internet import reactor, protocol
28+
from twisted.internet.endpoints import connectProtocol, TCP4ClientEndpoint, SSL4ClientEndpoint
29+
from twisted.internet.interfaces import IOpenSSLClientConnectionCreator
30+
from twisted.python.failure import Failure
31+
except (ModuleNotFoundError, ImportError):
32+
raise DependencyException("Unable to import twisted module. Try to install it via `pip install twisted[tls]`")
33+
34+
try:
35+
from zope.interface import implementer
36+
except (ModuleNotFoundError, ImportError):
37+
raise DependencyException("Unable to import zope module. Try to install it via `pip install zope`")
3038

3139
from cassandra.connection import Connection, ConnectionShutdown, Timer, TimerManager, ConnectionException
3240

0 commit comments

Comments
 (0)