2015-05-06 12 views
1

Я использую guv и feedparser для одновременного анализа нескольких каналов. Ниже мой код:Feedparser - TypeError ('a float is required',)

guv.monkey_patch(time=True, socket=True) 

def parse_feed(_feed): 
    return feedparser.parse(_feed) 

def main(): 
    urls = ["http://feeds.bbci.co.uk/news/rss.xml"] 
    pool = guv.GreenPool() 
    results = pool.starmap(parse_feed, zip(urls)) 
    for resp in results: 
     print(str(resp)) 

Однако я получаю следующий результат:

{'bozo_exception': TypeError('a float is required',), 'bozo': 1, 'feed': {}, 'entries': []} 

У меня аналогичная проблема с использованием Eventlet, но не с родной Python 3 threading библиотеки.

+0

Ошибка 'bozo_exception' возвращается' feedparser.parse() '. Если вы изменяете 'parse_feed' для печати значения' _feed' перед вызовом 'feedparser.parse', получает ли он то, что, по вашему мнению, получает? – larsks

+0

@larsks спасибо. да, он печатает URL из списка. – nickbusted

ответ

0

Я не в состоянии установить guv модуль локально, так что я не могу проверить свой код дословная, но если я использую eventlet.greenpool.GreenPool вместо все работает отлично:

import feedparser 
import eventlet.greenpool 

def parse_feed(_feed): 
    print 'PARSE:', _feed 
    return feedparser.parse(_feed) 

def main(): 
    urls = ["http://feeds.bbci.co.uk/news/rss.xml"] 
    pool = eventlet.greenpool.GreenPool() 
    results = pool.starmap(parse_feed, zip(urls)) 
    for resp in results: 
     print resp 

main() 

Я также вижу правильное поведение с itertools.starmap() , Возможно ли, что вы видите какую-то временную ошибку?

+0

Спасибо, но я все равно получаю ту же ошибку. – nickbusted

+0

Даже использование eventlet – nickbusted

 Смежные вопросы

  • Нет связанных вопросов^_^