Django中使用多进程异步插入数据库数据
import os,time
from multiprocessing import Pool
import pymysql
connection = pymysql.connect(host='localhost', port=3307,user='root',passwd='123456',db='user',charset='utf8mb4', cursorclass=pymysql.cursors.DictCursor)
def worker(arg):
for i in range(2,6):
# print("子进程开始执行>>> pid={},ppid={},编号{}".format(os.getpid(),os.getppid(),arg))
time.sleep(3)
try:
cursor = connection.cursor()
# 创建sql 语句
sql = "insert into user(id,name,password) values('%s','%s','%s')"%(i,i,i)
# 执行sql语句
cursor.execute(sql)
# 获取所有记录列表
connection.commit()
# print("子进程终止>>> pid={},ppid={},编号{}".format(os.getpid(),os.getppid(),arg))
except Exception as e:
print(e)
def run(request):
print("主进程开始执行>>> pid={}".format(os.getpid()))
ps=Pool(1)
for i in range(1):
# ps.apply(worker,args=(i,)) # 同步执行
ps.apply_async(worker,args=(i,)) # 异步执行
# 关闭进程池,停止接受其它进程
ps.close()
# 阻塞进程
# ps.join()
return JsonResponse({"msg":"success"})