我有一个简单的函数,它遍历 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 项目上做同样的事情。目前我有一个函数( View )遍历每个 URL 以获取信息并更新数据库。
我唯一能找到的就是使用 Celery,但这对于我想要执行的简单任务来说似乎有点过于强大。
有什么简单的事情我可以做或者我必须使用 Celery 吗?
Currently I have a function (view) that go over each URL to get the information, and update the DB.
这意味着响应时间对你来说并不重要,而不是在后台(异步)做,如果你的响应时间减少 4(使用 4 个子进程/线程),你可以在前台做.如果是这种情况,您只需将示例代码放在 View 中即可。喜欢
from multiprocessing import Pool
def updateDB(ip):
code goes here...
def my_view(request):
pool = Pool(processes=4) # process per core
pool.map(updateDB, ip)
return HttpResponse("SUCCESS")
但是,如果您想在后台异步执行此操作,那么您应该使用 Celery 或遵循@BasicWolf 的建议之一。
我是一名优秀的程序员,十分优秀!