[英]Django: running a few tasks in parallel
我有一个基于Django 2.0.1构建的Web应用程序
用户上载文件,并且根据内容,存在以串行方式执行的任务。 执行后,结果将显示给用户。 有些任务是相互独立的。
我想并行执行独立任务。 我尝试在views.py
使用多重处理,但是在生成进程时会引发一些错误。 这些任务分析一些信息并写入文件。 然后将文件合并以向用户显示结果。
这些任务不能异步完成,因为需要将产生的结果显示给用户等待。 因此,我放弃了在其他讨论中建议的使用Celery的想法。
任何人的建议都会有所帮助。
谢谢
错误得到
这是我们得到回溯错误(最近一次通话最近):C:\\ Users \\ idea \\ AppData \\ Local \\ Enthought \\ Canopy \\ edm \\ envs \\ python \\ lib \\ multiprocessing \\ spawn.py“,第106行,在spawn_main exitcode = _main(fd)文件“ C:\\ Users \\ idea \\ AppData \\ Local \\ Enthought \\ Canopy \\ edm \\ envs \\ python \\ lib \\ multiprocessing \\ spawn.py”,行_main self = pickle.load(from_parent) “ G:\\ work \\ gitrepo \\ suprath-github \\ smartdata \\ ssd \\ FinalPlots \\ uploads \\ core \\ views.py”,第6行,来自uploads.core.models导入文档文件“ G:\\ work \\ gitrepo \\ suprath- github \\ smartdata \\ ssd \\ FinalPlots \\ uploads \\ core \\ models.py“,第7行,在类Document(models.Model)中:文件” C:\\ Users \\ idea \\ AppData \\ Local \\ Enthought \\ Canopy \\ edm \\ envs \\ python \\ lib \\ site-packages \\ django \\ db \\ models \\ base.py”,第100行,在新的 app_config = apps.get_ contains_app_config(module)文件“ C:\\ Users \\ idea \\ AppData \\ Local \\ Enthought \\ Canopy \\ edm中\\ envs \\ python \\ lib \\ site-packages \\ django \\ apps \\ registry.py“,第244行,位于get_ contains_app_config self.check_apps_ready()文件“ C:\\ Users \\ idea \\ AppData \\ Local \\ enthought \\ Canopy \\ edm \\ envs \\ python \\ lib \\ site-packages \\ django \\ apps \\ registry.py“,第127行,位于check_apps_ready中,引发AppRegistryNotReady(”尚未加载应用程序。“)django.core.exceptions。 AppRegistryNotReady:应用尚未加载。 追溯(最近一次通话):
这些任务无法异步完成,因为需要将产生的结果显示给用户等待
这并不意味着您不能使用异步队列(芹菜或其他)。 我们有一个非常相似的用例,并且确实使用celery来运行任务。 任务(部分并行,部分串行)将其进度存储在redis中,并且前端轮询以获取当前状态并向用户显示进度,然后当整个过程完成(成功或失败)时,我们显示结果(或错误)。
我同意@bruno desthuillieres提供的解决方案,但是,您可以实现一些套接字解决方案以联系用户。
由于来自用户的轮询可能会对性能产生巨大影响,因此套接字解决方案将非常适合这种情况。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.