Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
C
cpython
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Kirill Smelkov
cpython
Commits
264e9ac5
Commit
264e9ac5
authored
Aug 17, 2012
by
Richard Oudkerk
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Issue #14501: Clarify that authentication keys are byte strings
parent
b7c6c810
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
20 additions
and
19 deletions
+20
-19
Doc/library/multiprocessing.rst
Doc/library/multiprocessing.rst
+20
-19
No files found.
Doc/library/multiprocessing.rst
View file @
264e9ac5
...
...
@@ -1151,10 +1151,10 @@ their parent process exits. The manager classes are defined in the
*address* is the address on which the manager process listens for new
connections. If *address* is ``None`` then an arbitrary one is chosen.
*authkey* is the authentication key which will be used to check the
validity
of incoming connections to the server process. If *authkey* is ``None`` then
``current_process().authkey``. Otherwise *authkey* is used and it
must be a
string.
*authkey* is the authentication key which will be used to check the
validity of incoming connections to the server process. If
*authkey* is ``None`` then ``current_process().authkey`` is used.
Otherwise *authkey* is used and it must be a byte
string.
.. method:: start([initializer[, initargs]])
...
...
@@ -1168,7 +1168,7 @@ their parent process exits. The manager classes are defined in the
:meth:`serve_forever` method::
>>> from multiprocessing.managers import BaseManager
>>> manager = BaseManager(address=('', 50000), authkey='
abc
')
>>> manager = BaseManager(address=('', 50000), authkey=
b
'
abc
')
>>> server = manager.get_server()
>>> server.serve_forever()
...
...
@@ -1179,7 +1179,7 @@ their parent process exits. The manager classes are defined in the
Connect a local manager object to a remote manager process::
>>> from multiprocessing.managers import BaseManager
>>> m = BaseManager(address=('
127.0.0.1
', 5000), authkey='
abc
')
>>> m = BaseManager(address=('
127.0.0.1
', 5000), authkey=
b
'
abc
')
>>> m.connect()
.. method:: shutdown()
...
...
@@ -1380,7 +1380,7 @@ remote clients can access::
>>> queue = queue.Queue()
>>> class QueueManager(BaseManager): pass
>>> QueueManager.register('
get_queue
', callable=lambda:queue)
>>> m = QueueManager(address=('', 50000), authkey='
abracadabra
')
>>> m = QueueManager(address=('', 50000), authkey=
b
'
abracadabra
')
>>> s = m.get_server()
>>> s.serve_forever()
...
...
@@ -1389,7 +1389,7 @@ One client can access the server as follows::
>>> from multiprocessing.managers import BaseManager
>>> class QueueManager(BaseManager): pass
>>> QueueManager.register('
get_queue
')
>>> m = QueueManager(address=('
foo
.
bar
.
org
', 50000), authkey='
abracadabra
')
>>> m = QueueManager(address=('
foo
.
bar
.
org
', 50000), authkey=
b
'
abracadabra
')
>>> m.connect()
>>> queue = m.get_queue()
>>> queue.put('
hello
')
...
...
@@ -1399,7 +1399,7 @@ Another client can also use it::
>>> from multiprocessing.managers import BaseManager
>>> class QueueManager(BaseManager): pass
>>> QueueManager.register('
get_queue
')
>>> m = QueueManager(address=('
foo
.
bar
.
org
', 50000), authkey='
abracadabra
')
>>> m = QueueManager(address=('
foo
.
bar
.
org
', 50000), authkey=
b
'
abracadabra
')
>>> m.connect()
>>> queue = m.get_queue()
>>> queue.get()
...
...
@@ -1423,7 +1423,7 @@ client to access it remotely::
>>> class QueueManager(BaseManager): pass
...
>>> QueueManager.register('
get_queue
', callable=lambda: queue)
>>> m = QueueManager(address=('', 50000), authkey='
abracadabra
')
>>> m = QueueManager(address=('', 50000), authkey=
b
'
abracadabra
')
>>> s = m.get_server()
>>> s.serve_forever()
...
...
@@ -1768,9 +1768,9 @@ authentication* using the :mod:`hmac` module.
generally
be
omitted
since
it
can
usually
be
inferred
from
the
format
of
*
address
*.
(
See
:
ref
:`
multiprocessing
-
address
-
formats
`)
If
*
authenticate
*
is
``
True
``
or
*
authkey
*
is
a
string
then
digest
If
*
authenticate
*
is
``
True
``
or
*
authkey
*
is
a
byte
string
then
digest
authentication
is
used
.
The
key
used
for
authentication
will
be
either
*
authkey
*
or
``
current_process
().
authkey
)
``
if
*
authkey
*
is
``
None
``.
*
authkey
*
or
``
current_process
().
authkey
``
if
*
authkey
*
is
``
None
``.
If
authentication
fails
then
:
exc
:`
AuthenticationError
`
is
raised
.
See
:
ref
:`
multiprocessing
-
auth
-
keys
`.
...
...
@@ -1805,8 +1805,8 @@ authentication* using the :mod:`hmac` module.
If
*
authenticate
*
is
``
True
``
(``
False
``
by
default
)
or
*
authkey
*
is
not
``
None
``
then
digest
authentication
is
used
.
If
*
authkey
*
is
a
string
then
it
will
be
used
as
the
authentication
key
;
otherwise
it
must
be
*
None
*.
If
*
authkey
*
is
a
byte
string
then
it
will
be
used
as
the
authentication
key
;
otherwise
it
must
be
*
None
*.
If
*
authkey
*
is
``
None
``
and
*
authenticate
*
is
``
True
``
then
``
current_process
().
authkey
``
is
used
as
the
authentication
key
.
If
...
...
@@ -1919,12 +1919,13 @@ unpickled. Unfortunately unpickling data from an untrusted source is a security
risk
.
Therefore
:
class
:`
Listener
`
and
:
func
:`
Client
`
use
the
:
mod
:`
hmac
`
module
to
provide
digest
authentication
.
An
authentication
key
is
a
string
which
can
be
thought
of
as
a
password
:
once
a
connection
is
established
both
ends
will
demand
proof
that
the
other
knows
the
authentication
key
.
(
Demonstrating
that
both
ends
are
using
the
same
key
does
**
not
**
involve
sending
the
key
over
the
connection
.)
An
authentication
key
is
a
byte
string
which
can
be
thought
of
as
a
password
:
once
a
connection
is
established
both
ends
will
demand
proof
that
the
other
knows
the
authentication
key
.
(
Demonstrating
that
both
ends
are
using
the
same
key
does
**
not
**
involve
sending
the
key
over
the
connection
.)
If
authentication
is
requested
but
d
o
authentication
key
is
specified
then
the
If
authentication
is
requested
but
n
o
authentication
key
is
specified
then
the
return
value
of
``
current_process
().
authkey
``
is
used
(
see
:
class
:`~
multiprocessing
.
Process
`).
This
value
will
automatically
inherited
by
any
:
class
:`~
multiprocessing
.
Process
`
object
that
the
current
process
creates
.
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment