summaryrefslogtreecommitdiff
path: root/reference/kombu.clocks.html
blob: 90fa5d88a23e0f3b7d1121f085ba621f6c527f3e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    
    <title>Clocks and Synchronization - kombu.clocks &mdash; Kombu v1.3.1 documentation</title>
    <link rel="stylesheet" href="../_static/celery.css" type="text/css" />
    <link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
    <script type="text/javascript">
      var DOCUMENTATION_OPTIONS = {
        URL_ROOT:    '../',
        VERSION:     '1.3.1',
        COLLAPSE_INDEX: false,
        FILE_SUFFIX: '.html',
        HAS_SOURCE:  true
      };
    </script>
    <script type="text/javascript" src="../_static/jquery.js"></script>
    <script type="text/javascript" src="../_static/underscore.js"></script>
    <script type="text/javascript" src="../_static/doctools.js"></script>
    <link rel="top" title="Kombu v1.3.1 documentation" href="../index.html" />
    <link rel="up" title="API Reference" href="index.html" />
    <link rel="next" title="kombu.compat" href="kombu.compat.html" />
    <link rel="prev" title="Common Utilities - kombu.common" href="kombu.common.html" /> 
  </head>
  <body>
    <div class="related">
      <h3>Navigation</h3>
      <ul>
        <li class="right" style="margin-right: 10px">
          <a href="../genindex.html" title="General Index"
             accesskey="I">index</a></li>
        <li class="right" >
          <a href="../py-modindex.html" title="Python Module Index"
             >modules</a> |</li>
        <li class="right" >
          <a href="kombu.compat.html" title="kombu.compat"
             accesskey="N">next</a> |</li>
        <li class="right" >
          <a href="kombu.common.html" title="Common Utilities - kombu.common"
             accesskey="P">previous</a> |</li>
        <li><a href="../index.html">Kombu v1.3.1 documentation</a> &raquo;</li>
          <li><a href="index.html" accesskey="U">API Reference</a> &raquo;</li> 
      </ul>
    </div>  

    <div class="document">
      <div class="documentwrapper">
        <div class="bodywrapper">
          <div class="body">
            
  <div class="section" id="clocks-and-synchronization-kombu-clocks">
<h1>Clocks and Synchronization - kombu.clocks<a class="headerlink" href="#clocks-and-synchronization-kombu-clocks" title="Permalink to this headline">¶</a></h1>
<span class="target" id="module-kombu.clocks"></span><dl class="class">
<dt id="kombu.clocks.LamportClock">
<em class="property">class </em><tt class="descclassname">kombu.clocks.</tt><tt class="descname">LamportClock</tt><big>(</big><em>initial_value=0</em><big>)</big><a class="headerlink" href="#kombu.clocks.LamportClock" title="Permalink to this definition">¶</a></dt>
<dd><p>Lamport&#8217;s logical clock.</p>
<p>From Wikipedia:</p>
<p>&#8220;A Lamport logical clock is a monotonically incrementing software counter
maintained in each process.  It follows some simple rules:</p>
<blockquote>
<div><ul class="simple">
<li>A process increments its counter before each event in that process;</li>
<li>When a process sends a message, it includes its counter value with
the message;</li>
<li>On receiving a message, the receiver process sets its counter to be
greater than the maximum of its own value and the received value
before it considers the message received.</li>
</ul>
</div></blockquote>
<p>Conceptually, this logical clock can be thought of as a clock that only
has meaning in relation to messages moving between processes.  When a
process receives a message, it resynchronizes its logical clock with
the sender.</p>
<div class="admonition-see-also admonition seealso">
<p class="first admonition-title">See also</p>
<p><a class="reference external" href="http://en.wikipedia.org/wiki/Lamport_timestamps">http://en.wikipedia.org/wiki/Lamport_timestamps</a>
<a class="reference external" href="http://en.wikipedia.org/wiki/Lamport">http://en.wikipedia.org/wiki/Lamport</a>&#8216;<a href="#id1"><span class="problematic" id="id2">s_Distributed_</span></a></p>
<blockquote class="last">
<div>Mutual_Exclusion_Algorithm</div></blockquote>
</div>
<p><em>Usage</em></p>
<p>When sending a message use <a class="reference internal" href="#kombu.clocks.LamportClock.forward" title="kombu.clocks.LamportClock.forward"><tt class="xref py py-meth docutils literal"><span class="pre">forward()</span></tt></a> to increment the clock,
when receiving a message use <a class="reference internal" href="#kombu.clocks.LamportClock.adjust" title="kombu.clocks.LamportClock.adjust"><tt class="xref py py-meth docutils literal"><span class="pre">adjust()</span></tt></a> to sync with
the time stamp of the incoming message.</p>
<dl class="method">
<dt id="kombu.clocks.LamportClock.adjust">
<tt class="descname">adjust</tt><big>(</big><em>other</em><big>)</big><a class="headerlink" href="#kombu.clocks.LamportClock.adjust" title="Permalink to this definition">¶</a></dt>
<dd></dd></dl>

<dl class="method">
<dt id="kombu.clocks.LamportClock.forward">
<tt class="descname">forward</tt><big>(</big><big>)</big><a class="headerlink" href="#kombu.clocks.LamportClock.forward" title="Permalink to this definition">¶</a></dt>
<dd></dd></dl>

<dl class="attribute">
<dt id="kombu.clocks.LamportClock.value">
<tt class="descname">value</tt><a class="headerlink" href="#kombu.clocks.LamportClock.value" title="Permalink to this definition">¶</a></dt>
<dd><p>The clocks current value.</p>
</dd></dl>

</dd></dl>

</div>


          </div>
        </div>
      </div>
      <div class="sphinxsidebar">
        <div class="sphinxsidebarwrapper"><p class="logo"><a href="../index.html">
  <img class="logo" width="128" height="128" src="http://cloud.github.com/downloads/ask/kombu/kombusmall.jpg" alt="Logo"/>
</a></p>
  <h4>Previous topic</h4>
  <p class="topless"><a href="kombu.common.html"
                        title="previous chapter">Common Utilities - kombu.common</a></p>
  <h4>Next topic</h4>
  <p class="topless"><a href="kombu.compat.html"
                        title="next chapter">kombu.compat</a></p>
  <h3>This Page</h3>
  <ul class="this-page-menu">
    <li><a href="../_sources/reference/kombu.clocks.txt"
           rel="nofollow">Show Source</a></li>
  </ul>
<div id="searchbox" style="display: none">
  <h3>Quick search</h3>
    <form class="search" action="../search.html" method="get">
      <input type="text" name="q" size="18" />
      <input type="submit" value="Go" />
      <input type="hidden" name="check_keywords" value="yes" />
      <input type="hidden" name="area" value="default" />
    </form>
    <p class="searchtip" style="font-size: 90%">
    Enter search terms or a module, class or function name.
    </p>
</div>
<script type="text/javascript">$('#searchbox').show(0);</script>
        </div>
      </div>
      <div class="clearer"></div>
    </div>
    <div class="related">
      <h3>Navigation</h3>
      <ul>
        <li class="right" style="margin-right: 10px">
          <a href="../genindex.html" title="General Index"
             >index</a></li>
        <li class="right" >
          <a href="../py-modindex.html" title="Python Module Index"
             >modules</a> |</li>
        <li class="right" >
          <a href="kombu.compat.html" title="kombu.compat"
             >next</a> |</li>
        <li class="right" >
          <a href="kombu.common.html" title="Common Utilities - kombu.common"
             >previous</a> |</li>
        <li><a href="../index.html">Kombu v1.3.1 documentation</a> &raquo;</li>
          <li><a href="index.html" >API Reference</a> &raquo;</li> 
      </ul>
    </div>
    <div class="footer">
        &copy; Copyright 2009-2011, Ask Solem.
      Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.0.7.
    </div>
  </body>
</html>