os环境 centos前端
python2.7.5python
django1.10.8ajax
class AdminAutoRunTask(View): """ 自动跑外听任务 """ def post(self, request):
# 省略一些代码 for keyword, number in json.loads(task.keyword).items(): p = multiprocessing.Process(target=self.auto_run_task, args=(int(number), task.app_id.app_id, keyword)) p.start() log.info('auto_run_task: task_id=%s,keyword=%s, pid=%s' % (task.id, keyword, p.pid)) return JsonResponse({'code': 1, 'msg': 'success'})
views.py中post处理函数在return以前启动了一个或多个进程,而后虽然这里虽然return了,可是其实前端页面ajax并无接收到数据。开发环境是好的os ubuntudjango
表现为ajax超时后抛出异常:net::ERR_INCOMPLETE_CHUNKED_ENCODINGjson
解决方法把进程修改成线程ubuntu
class AdminAutoRunTask(View): """ 自动跑外听任务 """ def post(self, request): # 省略一些代码 for keyword, number in json.loads(task.keyword).items(): p = threading.Thread(target=self.auto_run_task, args=(int(number), task.app_id.app_id, keyword)) p.start() log.info('auto_run_task: task_id=%s,keyword=%s' % (task.id, keyword)) return JsonResponse({'code': 1, 'msg': 'success'})