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

时间:2018-10-10 04:17:58

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

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

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

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

通过建立SSH会话来远程执行任务? 仍然使用Celery,经过很多变通办法才能使其在Windows上运行(似乎很混乱)?

1 个答案:

答案 0 :(得分:0)

我可以想到5种不需要ssh的解决方案

我没有在我的解决方案中谈论身份验证,您应该基于所选的解决方案来实现

解决方案1:

  • 为Windows服务器编写一个简单的flask / django应用程序,该应用程序运行任务并返回响应
  • 在您的linux服务器中,向Windows发送请求并获取数据
  • Linux服务器可以使用celery拨打此电话,因此您不必为等待大约2/3分钟而烦恼

解决方案2:

  • 为Windows Server编写一个简单的flask / django应用程序,该应用程序在后台调用芹菜任务
    • 此应用应返回结果文件的网址
  • celery任务创建一个包含结果的文件
  • 使用nginx(或基于Windows的静态文件服务器,我不知道Windows)为该文件提供服务
  • 从linux服务器向Windows发送请求以获取结果(如果文件不存在,则意味着结果尚未准备好)

解决方案3:

  • 为Windows Server编写一个简单的flask / django应用程序,该应用程序在后台调用芹菜任务
    • 此应用为给定请求返回随机ID
  • 从您的linux服务器将请求发送到具有任务ID的Windows应用
  • 任务完成时,Windows应用返回结果

解决方案4:

  • 为Windows服务器编写一个简单的flask / django应用,该应用在后台调用芹菜任务
  • 将端点添加到linux django应用中以上传数据
  • Windows应用程序完成处理后,会将数据上传到linux django应用程序

解决方案5:

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