【问题标题】:Best way to run task on Windows from web server on Linux从 Linux 上的 Web 服务器在 Windows 上运行任务的最佳方式
【发布时间】:2018-10-10 04:17:57
【问题描述】:

我有一个用 Python 编写的任务,运行时间为 1-2 分钟,我想按需运行。请求将来自 Linux 上的 Django 服务器的非常小的数量。返回将是一个文件。

通常,我会使用像 Celery 这样的队列系统。但是,这个任务只能在 Windows 上运行。

实现这一目标的最佳方法是什么?

通过建立 SSH 会话远程执行任务? 还在使用 Celery,通过很多变通方法让它在 Windows 上运行(看起来很乱)?

【问题讨论】:

    标签: python django linux windows python-3.x


    【解决方案1】:

    我能想到 5 个不需要 ssh 的解决方案

    我没有在我的解决方案中谈论身份验证,您应该根据选择的解决方案实现一些东西

    解决方案 1:

    • 为 windows 服务器编写一个简单的 flask/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 服务器编写一个简单的 flask/django 应用程序,在后台调用 celery 任务
    • 为您的 linux django 应用添加一个端点以上传数据
    • 当 windows 应用程序完成处理后,它会将数据上传到 linux django 应用程序

    解决方案 5:

    • 解决方案 4 但您的 linux django 应用程序不适用于上传数据。它只设置一个布尔值,表示任务已完成
    • 如果任务完成,linux服务器向winsows服务器发送请求以获取数据(该请求包含任务ID)

    【讨论】:

    • 谢谢,这对我来说是一组更好的起点。我意识到我也可以在这两个服务器之间有一个逻辑共享空间,因为它们是虚拟机,这将使提供文件更容易。
    猜你喜欢
    • 2017-08-24
    • 1970-01-01
    • 2023-03-23
    • 1970-01-01
    • 1970-01-01
    • 2011-07-31
    • 2015-01-27
    • 2012-11-08
    • 1970-01-01
    相关资源
    最近更新 更多