【发布时间】:2016-02-29 21:17:37
【问题描述】:
我有一个简单的函数来遍历 URL 列表,使用 GET 检索一些信息并相应地更新数据库 (PostgresSQL)。该功能完美运行。但是,一次一个地浏览每个 URL 会占用太多时间。
使用 python,我可以执行以下操作来并行执行这些任务:
from multiprocessing import Pool
def updateDB(ip):
code goes here...
if __name__ == '__main__':
pool = Pool(processes=4) # process per core
pool.map(updateDB, ip)
这工作得很好。但是,我试图找到如何在 django 项目上做同样的事情。目前我有一个函数(视图)可以遍历每个 URL 以获取信息并更新数据库。
我唯一能找到的就是使用 Celery,但这对于我想要执行的简单任务来说似乎有点过于强大了。
有什么简单的我可以做或者我必须使用 Celery 吗?
【问题讨论】:
-
这是一个重复的任务吗?也许作为 cronjob 运行的自定义管理命令是另一种选择。
-
这真的取决于你想要的响应时间。您可以让服务器在生成 Celery 任务后立即响应,或者您可以进行多处理,然后仍然需要一些时间。不过不要打扰
multiprocessing,我建议使用优秀的joblib库。
标签: python django multiprocessing