我正在使用 Django、Celery、Eventlet 和 dnspython 来异步解析大约 500 个 rss 提要。
当我尝试同时解析 20 多个提要时,使用 dnspython 会导致“查找超时”错误。当我卸载 dnspython 时一切正常,但我失去了一些时间,因为 dns 查找阻塞了 celery 池。您有什么想法可以解决吗?
这是我的芹菜任务代码:
import eventlet
feedparser = eventlet.import_patched('feedparser')
from celery import group
@task(ignore_result=True)
def update_feeds():
group(update_feed.s(feed) for feed in Feed.objects.filter(active=True)).apply_async()
@task(ignore_result=True)
def update_feed(feed):
parsed_feed = feedparser.parse(feed.feed_url, etag=feed.etag, modified=feed.modified)
# It fails when I have dnspython installed returning <urlopen error (-3, 'Lookup timed out')> error
我正在使用 Ubuntu 12.04 LTS