我正在开发芹菜任务,以汇总来自facebook和twitter的社交内容。
任务如下
'facebook_service_handler'和'facebook_contents_handler'任务使用facebook open api和urlopen函数。
当urlopen请求不多时,它运行良好。 (4~5次以下) 但当urlopen请求超过4~5时,工作人员不再工作了。
也 当芹菜停止时,我打破了redis和celeryd,然后重新启动celeryd和redis。 最后的任务被执行
任何人帮我解决这个问题吗?
我在mac os lion上工作。
答案 0 :(得分:2)
理想情况下,您应该有两个不同的队列,一个用于网络I / O(使用eventlet,您可以“引发”更多进程),另一个用于其他任务(使用多处理)。如果您认为这很复杂,请查看CELERYD_TASK_SOFT_TIME_LIMIT。在celery任务中使用urllib.open时遇到了类似的问题,因为连接可能会挂起并弄乱整个系统。