本文整理汇总了Python中twisted.python.runtime.platform.getType方法的典型用法代码示例。如果您正苦于以下问题:Python platform.getType方法的具体用法?Python platform.getType怎么用?Python platform.getType使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类twisted.python.runtime.platform
的用法示例。
在下文中一共展示了platform.getType方法的12个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: _get_reactor
# 需要导入模块: from twisted.python.runtime import platform [as 别名]
# 或者: from twisted.python.runtime.platform import getType [as 别名]
def _get_reactor(platform):
try:
if platform.isLinux():
try:
from twisted.internet import epollreactor
cls = epollreactor.EPollReactor
except ImportError:
from twisted.internet import pollreactor
cls = pollreactor.PollReactor
elif platform.isMacOSX():
from twisted.internet import kqreactor
cls = kqreactor.KQueueReactor
elif platform.getType() == 'posix' and not platform.isMacOSX():
from twisted.internet import pollreactor
cls = pollreactor.PollReactor
else:
from twisted.internet import selectreactor
cls = selectreactor.SelectReactor
except ImportError:
from twisted.internet import selectreactor
cls = selectreactor.SelectReactor
return cls()
示例2: getHandleErrorCode
# 需要导入模块: from twisted.python.runtime import platform [as 别名]
# 或者: from twisted.python.runtime.platform import getType [as 别名]
def getHandleErrorCode(self):
"""
Return the argument L{SSL.Error} will be constructed with for this
case. This is basically just a random OpenSSL implementation detail.
It would be better if this test worked in a way which did not require
this.
"""
# Windows 2000 SP 4 and Windows XP SP 2 give back WSAENOTSOCK for
# SSL.Connection.write for some reason. The twisted.protocols.tls
# implementation of IReactorSSL doesn't suffer from this imprecation,
# though, since it is isolated from the Windows I/O layer (I suppose?).
# If test_properlyCloseFiles waited for the SSL handshake to complete
# and performed an orderly shutdown, then this would probably be a
# little less weird: writing to a shutdown SSL connection has a more
# well-defined failure mode (or at least it should).
name = fullyQualifiedName(getClass(reactor))
if platform.getType() == 'win32' and name != self._iocp:
return errno.WSAENOTSOCK
# This is terribly implementation-specific.
return [('SSL routines', 'SSL_write', 'protocol is shutdown')]
示例3: createResolver
# 需要导入模块: from twisted.python.runtime import platform [as 别名]
# 或者: from twisted.python.runtime.platform import getType [as 别名]
def createResolver(servers = None, resolvconf = None, hosts = None):
from twisted.names import resolve, cache, root, hosts as hostsModule
if platform.getType() == 'posix':
if resolvconf is None:
resolvconf = '/etc/resolv.conf'
if hosts is None:
hosts = '/etc/hosts'
theResolver = Resolver(resolvconf, servers)
hostResolver = hostsModule.Resolver(hosts)
else:
if hosts is None:
hosts = r'c:\windows\hosts'
from twisted.internet import reactor
bootstrap = _ThreadedResolverImpl(reactor)
hostResolver = hostsModule.Resolver(hosts)
theResolver = root.bootstrap(bootstrap)
L = [hostResolver, cache.CacheResolver(), theResolver]
return resolve.ResolverChain(L)
示例4: _getInstallFunction
# 需要导入模块: from twisted.python.runtime import platform [as 别名]
# 或者: from twisted.python.runtime.platform import getType [as 别名]
def _getInstallFunction(platform):
"""
Return a function to install the reactor most suited for the given platform.
@param platform: The platform for which to select a reactor.
@type platform: L{twisted.python.runtime.Platform}
@return: A zero-argument callable which will install the selected
reactor.
"""
# Linux: epoll(7) is the default, since it scales well.
#
# OS X: poll(2) is not exposed by Python because it doesn't support all
# file descriptors (in particular, lack of PTY support is a problem) --
# see <http://bugs.python.org/issue5154>. kqueue has the same restrictions
# as poll(2) as far PTY support goes.
#
# Windows: IOCP should eventually be default, but still has some serious
# bugs, e.g. <http://twistedmatrix.com/trac/ticket/4667>.
#
# We therefore choose epoll(7) on Linux, poll(2) on other non-OS X POSIX
# platforms, and select(2) everywhere else.
try:
if platform.isLinux():
try:
from twisted.internet.epollreactor import install
except ImportError:
from twisted.internet.pollreactor import install
elif platform.getType() == 'posix' and not platform.isMacOSX():
from twisted.internet.pollreactor import install
else:
from twisted.internet.selectreactor import install
except ImportError:
from twisted.internet.selectreactor import install
return install
示例5: ifPlatformSupported
# 需要导入模块: from twisted.python.runtime import platform [as 别名]
# 或者: from twisted.python.runtime.platform import getType [as 别名]
def ifPlatformSupported(f):
"""
Decorator for tests that are not expected to work on all platforms.
Calling L{PIDFile.isRunning} currently raises L{NotImplementedError} on
non-POSIX platforms.
On an unsupported platform, we expect to see any test that calls
L{PIDFile.isRunning} to raise either L{NotImplementedError}, L{SkipTest},
or C{self.failureException}.
(C{self.failureException} may occur in a test that checks for a specific
exception but it gets NotImplementedError instead.)
@param f: The test method to decorate.
@type f: method
@return: The wrapped callable.
"""
@wraps(f)
def wrapper(self, *args, **kwargs):
supported = platform.getType() == "posix"
if supported:
return f(self, *args, **kwargs)
else:
e = self.assertRaises(
(NotImplementedError, SkipTest, self.failureException),
f, self, *args, **kwargs
)
if isinstance(e, NotImplementedError):
self.assertTrue(
str(e).startswith("isRunning is not implemented on ")
)
return wrapper
示例6: createResolver
# 需要导入模块: from twisted.python.runtime import platform [as 别名]
# 或者: from twisted.python.runtime.platform import getType [as 别名]
def createResolver(servers=None, resolvconf=None, hosts=None):
"""
Create and return a Resolver.
@type servers: C{list} of C{(str, int)} or L{None}
@param servers: If not L{None}, interpreted as a list of domain name servers
to attempt to use. Each server is a tuple of address in C{str} dotted-quad
form and C{int} port number.
@type resolvconf: C{str} or L{None}
@param resolvconf: If not L{None}, on posix systems will be interpreted as
an alternate resolv.conf to use. Will do nothing on windows systems. If
L{None}, /etc/resolv.conf will be used.
@type hosts: C{str} or L{None}
@param hosts: If not L{None}, an alternate hosts file to use. If L{None}
on posix systems, /etc/hosts will be used. On windows, C:\windows\hosts
will be used.
@rtype: C{IResolver}
"""
if platform.getType() == 'posix':
if resolvconf is None:
resolvconf = b'/etc/resolv.conf'
if hosts is None:
hosts = b'/etc/hosts'
theResolver = Resolver(resolvconf, servers)
hostResolver = hostsModule.Resolver(hosts)
else:
if hosts is None:
hosts = r'c:\windows\hosts'
from twisted.internet import reactor
bootstrap = _ThreadedResolverImpl(reactor)
hostResolver = hostsModule.Resolver(hosts)
theResolver = root.bootstrap(bootstrap, resolverFactory=Resolver)
L = [hostResolver, cache.CacheResolver(), theResolver]
return resolve.ResolverChain(L)
示例7: test_recursiveConfiguration
# 需要导入模块: from twisted.python.runtime import platform [as 别名]
# 或者: from twisted.python.runtime.platform import getType [as 别名]
def test_recursiveConfiguration(self):
"""
Recursive DNS lookups, if enabled, should be a last-resort option.
Any other lookup method (cache, local lookup, etc.) should take
precedence over recursive lookups
"""
options = Options()
options.parseOptions(['--hosts-file', 'hosts.txt', '--recursive'])
ca, cl = _buildResolvers(options)
# Extra cleanup, necessary on POSIX because client.Resolver doesn't know
# when to stop parsing resolv.conf. See #NNN for improving this.
for x in cl:
if isinstance(x, ResolverChain):
recurser = x.resolvers[-1]
if isinstance(recurser, Resolver):
recurser._parseCall.cancel()
# On Windows, we need to use a threaded resolver, which leaves trash
# lying about that we can't easily clean up without reaching into the
# reactor and cancelling them. We only cancel the cleanup functions, as
# there should be no others (and it leaving a callLater lying about
# should rightly cause the test to fail).
if platform.getType() != 'posix':
# We want the delayed calls on the reactor, which should be all of
# ours from the threaded resolver cleanup
from twisted.internet import reactor
for x in reactor._newTimedCalls:
if _PY3:
self.assertEqual(x.func.__func__,
ThreadedResolver._cleanup)
else:
self.assertEqual(x.func.__func__,
ThreadedResolver._cleanup.__func__)
x.cancel()
self.assertIsInstance(cl[-1], ResolverChain)
示例8: getHandleErrorCode
# 需要导入模块: from twisted.python.runtime import platform [as 别名]
# 或者: from twisted.python.runtime.platform import getType [as 别名]
def getHandleErrorCode(self):
"""
Return the argument L{OpenSSL.SSL.Error} will be constructed with for
this case. This is basically just a random OpenSSL implementation
detail. It would be better if this test worked in a way which did not
require this.
"""
# Windows 2000 SP 4 and Windows XP SP 2 give back WSAENOTSOCK for
# SSL.Connection.write for some reason. The twisted.protocols.tls
# implementation of IReactorSSL doesn't suffer from this imprecation,
# though, since it is isolated from the Windows I/O layer (I suppose?).
# If test_properlyCloseFiles waited for the SSL handshake to complete
# and performed an orderly shutdown, then this would probably be a
# little less weird: writing to a shutdown SSL connection has a more
# well-defined failure mode (or at least it should).
# So figure out if twisted.protocols.tls is in use. If it can be
# imported, it should be.
if requireModule('twisted.protocols.tls') is None:
# It isn't available, so we expect WSAENOTSOCK if we're on Windows.
if platform.getType() == 'win32':
return errno.WSAENOTSOCK
# Otherwise, we expect an error about how we tried to write to a
# shutdown connection. This is terribly implementation-specific.
return [('SSL routines', 'SSL_write', 'protocol is shutdown')]
示例9: _getInstallFunction
# 需要导入模块: from twisted.python.runtime import platform [as 别名]
# 或者: from twisted.python.runtime.platform import getType [as 别名]
def _getInstallFunction(platform):
"""
Return a function to install the reactor most suited for the given platform.
@param platform: The platform for which to select a reactor.
@type platform: L{twisted.python.runtime.Platform}
@return: A zero-argument callable which will install the selected
reactor.
"""
# Linux: epoll(7) is the default, since it scales well.
#
# macOS: poll(2) is not exposed by Python because it doesn't support all
# file descriptors (in particular, lack of PTY support is a problem) --
# see <http://bugs.python.org/issue5154>. kqueue has the same restrictions
# as poll(2) as far PTY support goes.
#
# Windows: IOCP should eventually be default, but still has some serious
# bugs, e.g. <http://twistedmatrix.com/trac/ticket/4667>.
#
# We therefore choose epoll(7) on Linux, poll(2) on other non-macOS POSIX
# platforms, and select(2) everywhere else.
try:
if platform.isLinux():
try:
from twisted.internet.epollreactor import install
except ImportError:
from twisted.internet.pollreactor import install
elif platform.getType() == 'posix' and not platform.isMacOSX():
from twisted.internet.pollreactor import install
else:
from twisted.internet.selectreactor import install
except ImportError:
from twisted.internet.selectreactor import install
return install
示例10: createResolver
# 需要导入模块: from twisted.python.runtime import platform [as 别名]
# 或者: from twisted.python.runtime.platform import getType [as 别名]
def createResolver(servers=None, resolvconf=None, hosts=None):
"""
Create and return a Resolver.
@type servers: C{list} of C{(str, int)} or C{None}
@param servers: If not C{None}, interpreted as a list of addresses of
domain name servers to attempt to use. Addresses should be in dotted-quad
form.
@type resolvconf: C{str} or C{None}
@param resolvconf: If not C{None}, on posix systems will be interpreted as
an alternate resolv.conf to use. Will do nothing on windows systems. If
C{None}, /etc/resolv.conf will be used.
@type hosts: C{str} or C{None}
@param hosts: If not C{None}, an alternate hosts file to use. If C{None}
on posix systems, /etc/hosts will be used. On windows, C:\windows\hosts
will be used.
@rtype: C{IResolver}
"""
from twisted.names import resolve, cache, root, hosts as hostsModule
if platform.getType() == 'posix':
if resolvconf is None:
resolvconf = '/etc/resolv.conf'
if hosts is None:
hosts = '/etc/hosts'
theResolver = Resolver(resolvconf, servers)
hostResolver = hostsModule.Resolver(hosts)
else:
if hosts is None:
hosts = r'c:\windows\hosts'
from twisted.internet import reactor
bootstrap = _ThreadedResolverImpl(reactor)
hostResolver = hostsModule.Resolver(hosts)
theResolver = root.bootstrap(bootstrap)
L = [hostResolver, cache.CacheResolver(), theResolver]
return resolve.ResolverChain(L)
示例11: __init__
# 需要导入模块: from twisted.python.runtime import platform [as 别名]
# 或者: from twisted.python.runtime.platform import getType [as 别名]
def __init__(self, name, uid=None, gid=None, authorizer=None, authorizer_=None):
"""Initialize me.
If uid and gid arguments are not provided, this application will
default to having the uid and gid of the user and group who created it.
@param name: a name
@param uid: (optional) a POSIX user-id. Only used on POSIX systems.
@param gid: (optional) a POSIX group-id. Only used on POSIX systems.
"""
_AbstractServiceCollection.__init__(self)
self.name = name
# a list of (tcp, ssl, udp) Ports
self.tcpPorts = [] # check
self.udpPorts = []
self.sslPorts = []
self.unixPorts = []
self.extraPorts = []
self._listenerDict = {}
self._extraListeners = {}
# a list of (tcp, ssl, udp) Connectors
self.tcpConnectors = []
self.udpConnectors = []
self.sslConnectors = []
self.unixConnectors = []
self.extraConnectors = []
# a dict of ApplicationServices
self.services = {} # check
# a cred authorizer
a = authorizer or authorizer_
if a:
self._authorizer = a
self._authorizer.setServiceCollection(self)
if platform.getType() == "posix":
if uid is None:
uid = os.getuid()
self.uid = uid
if gid is None:
gid = os.getgid()
self.gid = gid
示例12: save
# 需要导入模块: from twisted.python.runtime import platform [as 别名]
# 或者: from twisted.python.runtime.platform import getType [as 别名]
def save(self, tag=None, filename=None, passphrase=None):
"""Save a pickle of this application to a file in the current directory.
"""
if self.persistStyle == "xml":
from twisted.persisted.marmalade import jellyToXML
dumpFunc = jellyToXML
ext = "tax"
elif self.persistStyle == "aot":
from twisted.persisted.aot import jellyToSource
dumpFunc = jellyToSource
ext = "tas"
else:
def dumpFunc(obj, file, _dump=pickle.dump):
_dump(obj, file, 1)
ext = "tap"
if filename:
finalname = filename
filename = finalname + "-2"
else:
if passphrase:
ext = 'e' + ext
if tag:
filename = "%s-%s-2.%s" % (self.name, tag, ext)
finalname = "%s-%s.%s" % (self.name, tag, ext)
else:
filename = "%s-2.%s" % (self.name, ext)
finalname = "%s.%s" % (self.name, ext)
log.msg("Saving "+self.name+" application to "+finalname+"...")
if passphrase is None:
f = open(filename, 'wb')
dumpFunc(self, f)
f.flush()
f.close()
else:
f = StringIO.StringIO()
dumpFunc(self, f)
s = encrypt(passphrase, f.getvalue())
f = open(filename, 'wb')
f.write(s)
f.flush()
f.close()
if platform.getType() == "win32":
if os.path.isfile(finalname):
os.remove(finalname)
os.rename(filename, finalname)
log.msg("Saved.")