python - 从 Linux 上的 Web 服务器在 Windows 上运行任务的最佳方式

标签 python django linux windows python-3.x

我有一个用 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/

相关文章:

python - 将函数应用于dict中的值

python - OpenSSL.crypto.Error : [] in SignedJwtAssertionCredentials attempt

python - Windows 上的 django-admin.py 和 virtualenv 问题

python - Django ReStructuredText 中的数学指令

python - 防止在 Django 中自动转义自定义模板标签

c++ - pthread mutex lock - 它是定期检查还是操作系统唤醒它

c++ - 如何用swig实例化模板类的模板方法?

python - 无法删除文件 - 文件正被另一个进程使用

linux - 反引号 `cat filename` 失败,文件内容是几个命令

linux - 如何在 Linux 中获取给定语言环境的语言名称