docs: def fail_tmp(item, max_tries=None, ttl=None):
      '''Try to fail a work-item temporarily (up recount and keep in queue),
         if max tries or ttl is exhausted, escalate to permanant failure.'''
      try:
          max_tries = item.max_tries if max_tries is None else max_tries
          ttl = item.ttl if ttl is None else ttl
  
          # see if we need to fail perm
          check_ttl_max_tries(item.tries+1, item.enqueued_at, max_tries, ttl)
          # mv to same plus 1
          item.tries += 1
          new_name = construct(( fmt_time(item.enqueued_at, _c.FSQ_TIMEFMT,
                                 _c.FSQ_CHARSET), item.entropy,
                                 item.pid, item.hostname,
                                 item.tries, ) + tuple(item.arguments))
          os.rename(fsq_path.item(item.queue, item.id, host=item.host),
  				  fsq_path.item(item.queue, new_name, host=item.host))
          return new_name
      except (FSQMaxTriesError, FSQTTLExpiredError, FSQEnqueueError, ), e:
          fail_perm(item)
          e.strerror = u': '.join([
              e.strerror,
              u'for item {0}; failed permanently'.format(item.id),
          ])
          raise e