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