我有一个用 Python 编写的任务,运行时间为 1-2 分钟,我想按需运行。这些请求会从 Linux 上的 Django 服务器以非常小的数量发出。返回将是一个文件。
通常,我会使用像 Celery 这样的队列系统。但是,此任务只能在 Windows 上运行。
实现这一目标的最佳方法是什么?
通过建立 SSH session 远程执行任务? 仍然使用 Celery,通过大量变通方法让它在 Windows 上工作(看起来很乱)?
最佳答案
我可以想到 5 个不需要 ssh 的解决方案
我没有在我的解决方案中谈论身份验证,您应该根据所选的解决方案实现一些东西
解决方案一:
- 为运行任务并返回响应的 Windows 服务器编写一个简单的 flask/django 应用
- 在您的 linux 服务器中向 windows 发送请求并获取数据
- linux 服务器可以使用 celery 进行此调用,因此您无需等待 2/3 分钟
解决方案 2:
- 为 Windows 服务器编写一个简单的 flask/django 应用程序,它在后台调用 celery 任务
- 此应用程序应返回结果文件的 url
- celery 任务创建一个包含结果的文件
- 使用 nginx(或基于 windows 的静态文件服务器,我不知道 windows)提供此文件
- 从 linux 服务器向 windows 发送请求以获取结果(如果文件不存在,则表示结果尚未准备好)
解决方案 3:
- 为 Windows 服务器编写一个简单的 flask/django 应用程序,它在后台调用 celery 任务
- 此应用为给定请求返回一个随机 ID
- 从您的 linux 服务器向带有任务 ID 的 windows 应用程序发送请求
- 当任务完成时,windows 应用返回结果
解决方案 4:
- 为 Windows 服务器编写一个简单的 flask/django 应用程序,它在后台调用 celery 任务
- 将端点添加到您的 linux django 应用程序以上传数据
- 当 Windows 应用程序完成处理后,它会将数据上传到 linux django 应用程序
解决方案 5:
- 解决方案 4 但您的 linux django 应用程序不适用于上传数据。它只设置一个 bool 值,表示任务已完成
- 如果任务完成,linux服务器向winsows服务器发送请求获取数据(该请求包含任务id)
关于python - 从 Linux 上的 Web 服务器在 Windows 上运行任务的最佳方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52732565/