Observing PEP maximum line size, particularly when formatting localized timestamps
First of all, notice the duplicated parts in these long expressions:

pytz.utc.localize(
    datetime.datetime.utcfromtimestamp(time.time())).astimezone(
    pytz.timezone('US/Eastern')).strftime('%Y-%m-%d %H:%M:%S')

pytz.utc.localize(
    datetime.datetime.utcfromtimestamp(float(job.get('starttime')))).astimezone(
    pytz.timezone('US/Eastern')).strftime('%Y-%m-%d %H:%M:%S')


Having duplicated code segments is both inconvenient and error-prone.
If you want to / need to change anything later,
you have to remember to do that in all places,
and it's easy to make a mistake.

So it will be good to extract this to a helper function:

def get_formatted_time(val):
    return pytz.utc.localize(
        datetime.datetime.utcfromtimestamp(val)).astimezone(
        pytz.timezone('US/Eastern')).strftime('%Y-%m-%d %H:%M:%S')


You can break lines within parentheses.
Now this looks fairly tidy, and it's PEP8 compliant.

Using this helper you can rewrite the original code becomes simpler:

SMS.publish('/jobs', {
    'batchdate': job.get('batchdate'),
    'job': job.get('name'),
    'Script execution date (EST)': get_formatted_time(time.time()),
    'Start time(EST)': get_formatted_time(float(job.get('starttime'))),
    'Current runtime': change_format_num(cur_runtime),
    'Average runtime': change_format_num(avg_time)
})