title: Fabric: Scalability of rsync_project vs upload_project
body: <p>I am writing code to deploy using Fabric to all the web machines and was wondering how <a href="http://docs.fabfile.org/en/1.4.2/api/contrib/project.html" rel="nofollow">rsync vs. upload project</a> works in terms of <strong>parallelizing and shortest time</strong>.   </p>
  
  <p>Are there any benchmarks? </p>
  
  <p>Can I rsync to 100 machines in parallel? What’s the limiting factor? </p>
  
  <pre><code>  rsync_project(
          env.root,
          exclude=RSYNC_EXCLUDE,
          delete=True,
          extra_opts=extra_opts,
      )
  </code></pre>
  
  <p>Similarly what’s the limiting factor for upload_project? What’s the sftp limit in terms of number?   </p>
  
  <pre><code>@parallel
  def testapp():
      with cd('~/projects'):
          upload_project('./receiver', '/home/sysadmin/projects')
  </code></pre>
  
  <p>From a hunch stand point, upload project should be better since the tar needs to be done only once and then its sftp. Or is it multiple times for an example shown above?   </p>
  
  <p>Does fabric do some sort of throttling to ensure the network is not choked to the limit?   </p>
  
  <p>Can someone help with this? </p>