将多线程任务运行器与 Django Web 应用程序连接
Connecting multithreaded task runner with django web application
我正在使用 Django 开发 Web 服务。除了 Web 应用程序之外,我还有一个包含大约 40 个函数的单独模块,这些函数接受一些参数,执行一些网络绑定任务和 return 结果。可以从 Django 视图调用这些函数(或入口点函数)。
这是我要实现的流程。
- 用户可以从 Web 应用程序提交 URL 以开始操作。
- 该请求应在服务器中并行启动这些功能(使用 URL 作为参数)(不一定同时启动)
- 用户可以从 Web 应用程序发出请求,以获取已完成任务的列表和正在进行的操作的结果。
- 多个用户可以向 Web 应用程序提交 URLs 并分别启动操作(每个用户获得一个包含 40 个结果的列表)
目前我正在试验 Thread
和 Queue
类 来实现这一点。我想知道的是如何在没有这么多线程的情况下管理这个流程?我应该如何保持两个操作会话之间的分离?有什么方法可以让我与 django 的功能合作吗?
我所要求的只是关于如何组织事情以实现这一目标的基本准则。
听起来您可以在 celery 中调用函数,celery 是 python 的分布式任务队列模块。在此处查看与 django 集成的文档:http://docs.celeryproject.org/en/latest/django/first-steps-with-django.html
有一个名为 django 的模块- celery-beat 您需要调度任务。
我正在使用 Django 开发 Web 服务。除了 Web 应用程序之外,我还有一个包含大约 40 个函数的单独模块,这些函数接受一些参数,执行一些网络绑定任务和 return 结果。可以从 Django 视图调用这些函数(或入口点函数)。
这是我要实现的流程。
- 用户可以从 Web 应用程序提交 URL 以开始操作。
- 该请求应在服务器中并行启动这些功能(使用 URL 作为参数)(不一定同时启动)
- 用户可以从 Web 应用程序发出请求,以获取已完成任务的列表和正在进行的操作的结果。
- 多个用户可以向 Web 应用程序提交 URLs 并分别启动操作(每个用户获得一个包含 40 个结果的列表)
目前我正在试验 Thread
和 Queue
类 来实现这一点。我想知道的是如何在没有这么多线程的情况下管理这个流程?我应该如何保持两个操作会话之间的分离?有什么方法可以让我与 django 的功能合作吗?
我所要求的只是关于如何组织事情以实现这一目标的基本准则。
听起来您可以在 celery 中调用函数,celery 是 python 的分布式任务队列模块。在此处查看与 django 集成的文档:http://docs.celeryproject.org/en/latest/django/first-steps-with-django.html
有一个名为 django 的模块- celery-beat 您需要调度任务。