Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/318.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Django:并行运行几个任务_Python_Django_Python Multiprocessing - Fatal编程技术网

Python Django:并行运行几个任务

Python Django:并行运行几个任务,python,django,python-multiprocessing,Python,Django,Python Multiprocessing,我有一个基于Django 2.0.1版的web应用程序 用户上传一个文件,并根据内容,以串行方式执行一些任务。执行后,结果将显示给用户。有些任务是相互独立的 我想并行执行独立的任务。我尝试在views.py中使用多处理,但在生成进程时会引发一些错误。这些任务分析一些信息并写入文件。然后将这些文件组合起来,向用户显示结果 这些任务不能异步完成,因为生成的结果需要显示给等待的用户。因此,我放弃了在其他讨论中建议使用芹菜的想法 任何人的建议都会有帮助 谢谢 出错 这是我们回溯到的错误(上次的最新呼叫)

我有一个基于Django 2.0.1版的web应用程序

用户上传一个文件,并根据内容,以串行方式执行一些任务。执行后,结果将显示给用户。有些任务是相互独立的

我想并行执行独立的任务。我尝试在
views.py
中使用多处理,但在生成进程时会引发一些错误。这些任务分析一些信息并写入文件。然后将这些文件组合起来,向用户显示结果

这些任务不能异步完成,因为生成的结果需要显示给等待的用户。因此,我放弃了在其他讨论中建议使用芹菜的想法

任何人的建议都会有帮助

谢谢

出错

这是我们回溯到的错误(上次的最新呼叫): C:\Users\idea\AppData\Local\enthught\Canopy\edm\envs\python\lib\multiprocessing\spawn.py”,第106行,在spawn\u main中 出口代码=_主(fd) 文件“C:\Users\idea\AppData\Local\enthunk\corporation\edm\envs\python\lib\multiprocessing\spawn.py”,第116行,在主目录中 self=pickle.load(从父级) 文件“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行,在 类文档(models.Model): 文件“C:\Users\idea\AppData\Local\enthunk\Canopy\edm\envs\python\lib\site packages\django\db\models\base.py”,第100行,在新建 app\u config=apps.get\u包含app\u config(模块) 文件“C:\Users\idea\AppData\Local\enthund\Canopy\edm\envs\python\lib\site packages\django\apps\registry.py”,第244行,在包含应用程序配置的get_中 self.check_apps_ready() 文件“C:\Users\idea\AppData\Local\enthunk\Canopy\edm\envs\python\lib\site packages\django\apps\registry.py”,第127行,在check\u apps\u ready中 raise AppRegistryNotReady(“应用程序尚未加载。”) django.core.exceptions.AppRegistryNotReady:尚未加载应用程序。 回溯(最近一次呼叫最后一次):

这些任务不能异步完成,因为生成的结果需要显示给等待的用户


这并不意味着你不能使用异步队列(芹菜或其他)。我们有一个非常类似的用例,确实使用芹菜来运行任务。任务(部分并行,部分串行)将其进度存储在redis中,前端轮询以获取当前状态并向用户显示进度,然后在整个过程完成时(成功与否)我们显示结果(或错误)。

我同意@bruno desthuillieres提供的解决方案,但是,您可以实施一些套接字解决方案来回馈用户


由于来自用户的轮询可能会对性能产生巨大影响,因此套接字解决方案将非常适合这种情况。

您的问题缺少任何类型的信息。您说您收到错误,但您没有提供任何回溯或任何代码来重现问题,因此我们无法告诉您是否可以通过对问题进行细微调整来解决问题您的原始解决方案。您没有说明这些任务需要多少时间。如果它们需要几分钟的时间,那么异步请求是必须的。这一次:浏览器或Web服务器可能会关闭持续那么长时间的连接,或者可能存在网络问题。您可以提交用户要完成的工作,并向用户提供一个链接以查看结果。请提供您遇到的代码示例和错误。我过去在Django中成功地使用了线程和多进程,因此如果代码编写正确,这里也应该可以。谢谢Bruno,我会尝试一下