i如何使用Python在远程服务器上启动异步服务器



我有一个运行Linux的虚拟服务器,有8个内核。32 GB RAM和1 TB。这应该是一个发展环境。(测试和生产也是如此(这是我可以从IT那里得到的。服务器只能通过所谓的通过putty或直接tcp/ip端口的跳转服务器访问(ssh是必须的(。

我正在处理的应用程序通过多处理启动多个进程。在每个进程中,都会启动异步事件循环,在某些情况下还会启动异步套接字服务器。基本上,它是一个低级别的数据流和处理应用程序(不幸的是,目前还没有可用的kafka或类似技术(。实时应用程序永远运行,不与用户交互或与用户交互有限(读取/处理/写入数据(。

我认为,IPython是一种选择,但——也许我错了——我认为它会根据客户端请求启动新的内核,但我需要从主代码开始新的进程,而不需要用户交互。如果是这样,这可以是一个选项,用于监视应用程序、从中收集数据、向主模块发送新的用户命令,但不确定如何远程运行进程和异步服务器。

我想了解在给定的环境下如何做到这一点。我不知道从哪里开始,还有什么替代方案。而且我不太理解这个问题,他们的页面对我来说还不清晰。

请帮帮我!提前谢谢!

经过大量的研究和学习,我在我们的";沙箱";环境首先,我不得不将问题分解为几个子问题:

  • "远程";发展
  • 平行化
  • 并行代码的调度与执行
  • 这些"网络"之间的数据共享;发动机">
  • 控制这些";发动机">

让我们详细了解:

  • 远程开发意味着您希望在笔记本电脑上编写代码,但代码必须在远程服务器上执行。简单的答案是Jupyter Notebook(或等效解决方案(,尽管它有几个折衷方案,也有其他解决方案,但它的部署和使用速度更快,依赖性和维护性最小
  • 并行化:在处理多处理时,iPython内核面临一些挑战,因此必须并行运行的每一个代码都将在单独的Jupyter Notebook中编写。在单个代码中,我仍然可以使用eventloop来获得异步行为
  • 执行并行代码:我将使用以下几个选项:
    • iPyParallel-";变通办法";用于多处理
    • 造纸厂-使用命令行中的参数执行JN(可选(
    • 在Jupyter笔记本中使用%%writefile魔术命令-创建可导入文件
    • 像cron这样的操作系统任务调度程序
    • 使用事件循环异步
    • 还没有选择:docker,多处理,多线程,云(aws,azure,谷歌…(
  • 数据共享:选择ZeroMQ,需要时间学习,但比在纯套接字上编写所有内容更简单、更容易。有其他选择,但有额外的依赖性,还有一些非常有用的好处(稍后会查看(:RabbitMQ、Redis消息代理等。喜欢ZMQ的原因是:快速、简单、优雅,而且只是一个库。(Knonw风险:我们的IT会更喜欢RabbitMQ,但这个问题稍后会出现:-(
  • 控制引擎:现在这个答案是显而易见的:单独的python代码(可以作为JN代码进行测试,但很容易转换为纯.py并进行调度(。这个模块可以通过ZMQ套接字与其他模块通信:健康检查、发送新参数、命令等

最新更新