python - 从 Linux 上的 Web 服务器在 Windows 上运行任务的最佳方式
问题描述
我有一个用 Python 编写的任务,运行时间为 1-2 分钟,我想按需运行。请求将来自 Linux 上的 Django 服务器的非常小的数量。返回将是一个文件。
通常,我会使用像 Celery 这样的队列系统。但是,此任务只能在 Windows 上运行。
实现这一目标的最佳方法是什么?
通过建立 SSH 会话远程执行任务?还在使用 Celery,通过很多变通方法让它在 Windows 上工作(看起来很乱)?
解决方案
我可以想到 5 个不需要 ssh 的解决方案
我没有在我的解决方案中谈论身份验证,您应该根据选择的解决方案实现某些东西
解决方案1:
- 为 windows 服务器编写一个简单的烧瓶/django 应用程序,它运行任务并返回响应
- 在您的 linux 服务器中向 windows 发送请求并获取数据
- linux 服务器可以使用 celery 进行此调用,因此您无需等待 2/3 分钟
解决方案2:
- 为 Windows 服务器编写一个简单的烧瓶/django 应用程序,它在后台调用 celery 任务
- 这个应用程序应该返回结果文件的 url
- celery 任务创建一个包含结果的文件
- 使用 nginx 提供此文件(或基于 windows 的静态文件服务器,我不知道 windows)
- 从 linux 服务器向 windows 发送请求以获取结果(如果文件不存在,则表示结果尚未准备好)
解决方案3:
- 为 Windows 服务器编写一个简单的烧瓶/django 应用程序,它在后台调用 celery 任务
- 这个应用程序为给定的请求返回一个随机 id
- 从您的 linux 服务器向具有任务 ID 的 Windows 应用程序发送请求
- 当任务完成时 Windows 应用程序返回结果
解决方案4:
- 为 Windows 服务器编写一个简单的烧瓶/django 应用程序,它在后台调用 celery 任务
- 将端点添加到您的 linux django 应用程序以上传数据
- 当 Windows 应用程序完成处理时,它会将数据上传到 linux django 应用程序
解决方案 5:
- 解决方案 4,但您的 linux django 应用程序不适用于上传数据。它只设置一个布尔值,表示任务已完成
- 如果任务完成linux服务器向winsows服务器发送请求以获取数据(此请求包含任务ID)
推荐阅读
- python - 了解神经网络的输出
- node.js - NodeJs 和 Firebase 嵌套 forEach 异步等待
- java - 在 Java 阶乘中输入负数时如何创建错误消息
- jquery - jQuery突出显示多个单元格
- symfony - symfony knp_snappy.pdf 不在 a-tag 中创建链接
- javascript - SCORM 2004 未能向 ScormCloud 或 Blackboard 报告分数
- python-2.7 - 在 Python 中加载多个模型以比较模型的结果
- python - 以列表为值将文件导入字典
- php - 从页面获取内容并比较它是否等于另一个页面php
- powershell - Powershell 脚本未附加 .CSV