This has to do with the job's "agenda", or list of work to be performed at the time the job is built at the submitting host.
If you're working over a frame range, your agenda currently probably contains a single item with the frame range as a string: '1-5' You have a list with a single item in it.
What you want to do is to generate a list of work, one per frame:
job = {}
fStart = 1
fEnd = 5
fStep = 1
job['agenda'] = []
# you can do it manually
for i in range(fStart, fEnd+1):
agendaItem = {'name': i}
job['agenda'].append( agendaItem )
# job['agenda'] is now
# [{'name': 1}, {'name': 2}, {'name': 3}, {'name': 4}, {'name': 5}]
# or you can use one of qb's gen* convenience functions:
import qb
# the same thing as the above iteration loop
job['agenda'] = qb.genframes( '%s-%s' % (fStart, fEnd))
# job['agenda'] is also now
# [{'name': 1}, {'name': 2}, {'name': 3}, {'name': 4}, {'name': 5}]
# divide the agenda into 2-frame "chunks"
job['agenda'] = qb.genchunks(2, '%s-%s' % (fStart, fEnd))
# job['agenda'] is now
# [Work({'name': '1-2'}), Work({'name': '3-4'}), Work({'name': '5'})]
# Or if you don't care about the chunksize, but want to split it up across a known number of items:
# split 73 frames evenly as possible across 4 items:
job['agenda'] = qb.genpartitions(4, '1-73')
# job['agenda'] is now
# [Work({'name': '1-19'}), Work({'name': '20-38'}), Work({'name': '39-57'}), Work({'name': '58-73'})]