python - gearman - продолжайте получать ошибку типа

У меня есть простой скрипт Python для отправки задач Gearman:

Клиент:

        # "source" is a simple tuple
        client = GearmanClient(['localhost'])
        client.submit_job('queue_feed', simplejson.dumps(source))

Сервер:

def queue_feed(work, job):
    source = simplejson.loads(job.data)
    print source

if __name__ == '__main__':
    if len(sys.argv) > 1:
        if sys.argv[1] == "spawn":
            worker = GearmanWorker(['localhost'])
            #nohup python /home/padsquad/apps/gearman_articles.py spawn &
            worker.register_task('queue_feed', queue_feed)
            print 'working...'
            worker.work()

Я не уверен, что я делаю неправильно, сервер gearman продолжает выдавать мне следующую ошибку:

TypeError: Expecting byte string, got <type 'NoneType'>

person Joe    schedule 10.01.2013    source источник
comment
Можете ли вы опубликовать полную трассировку, чтобы мы могли знать, в какой строке вы получаете ошибку?   -  person mgilson    schedule 10.01.2013


Ответы (1)


Я думаю, что функция queue_feed должна что-то return делать: например:

def queue_feed(work, job):
    source = simplejson.loads(job.data)
    print source
    return source

Если вы явно не возвращаете что-то из функции python, она неявно возвращает None, поэтому python жалуется на получение NoneType

person mgilson    schedule 10.01.2013
comment
Это была именно проблема, я все еще новичок в python :) - person Joe; 10.01.2013
comment
Я приму ваш ответ, как только задержка приема будет завершена через 5 минут. - person Joe; 10.01.2013
comment
хороший ответ - у меня была аналогичная проблема с Gearman, исправленная путем возврата «somestring» - person RichVel; 17.01.2013