title: Why do we need Signatures in Celery?
body: <p>I've started using Celery 4.1 in my Django Python project and have come across Signatures.</p>
  <p>In the <a href="http://docs.celeryproject.org/en/latest/userguide/canvas.html#signatures" rel="noreferrer">documentation</a> it says the following:</p>
  <blockquote>
  <p>You just learned how to call a task using the tasks delay method in the calling guide, and this is often all you need, but sometimes you may want to pass the signature of a task invocation to another process or as an argument to another function.</p>
  <p>A signature() wraps the arguments, keyword arguments, and execution options of a single task invocation in a way such that it can be passed to functions or even serialized and sent across the wire.</p>
  </blockquote>
  <p>Although I see them used in some of the examples I don't really know when and why to use them, as well as which problems they solve.
  Can someone explain this to a layman?</p>