如何使用Python在远程服务器上启动asyncio服务器?

2024-05-16 11:20:37 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个运行Linux的虚拟服务器,有8个内核。32 GB RAM,另外还有1 TB。它应该是一个发展环境。(与测试和产品相同)这是我可以从中得到的。只能通过putty或直接tcp/ip端口通过所谓的跳转服务器访问服务器(ssh是必须的)

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

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

我想了解如何在给定的环境中实现这些功能。我不知道从哪里开始,还有什么选择。我不完全理解伊皮顿,他们的页面对我来说还不是很难看

请帮帮我!提前谢谢你


Tags: 数据用户io服务器应用程序环境进程产品
1条回答
网友
1楼 · 发布于 2024-05-16 11:20:37

经过大量的研究和学习,我在我们的“沙箱”环境中找到了一个可能的解决方案。首先,我必须将问题分为几个子问题:

  • “远程”开发
  • 平行化
  • 并行代码的调度与执行
  • 这些“引擎”之间的数据共享
  • 控制这些“引擎”

让我们详细了解一下:

  • 远程开发意味着您希望在笔记本电脑上编写代码,但代码必须在远程服务器上执行。简单的答案是Jupyter笔记本(或同等解决方案),尽管它有几个折衷方案,也有其他解决方案可用,但部署和使用速度更快,依赖性和维护等最少
  • 并行化:在处理多处理时,iPython内核遇到了一些挑战,因此必须并行运行的每一个代码都将写在单独的Jupyter笔记本中。在单个代码中,我仍然可以使用eventloop来获得异步行为
  • 执行并行代码:我将使用几个选项:
    • iPyParallel“多处理的变通方法”
    • papermill-使用命令行中的参数执行JNs(可选)
    • 在Jupyter笔记本中使用%%writefile magic命令-创建导入表
    • 像cron这样的操作系统任务调度器
    • 与eventloops异步
    • 还没有选择:docker、多处理、多线程、云(aws、azure、google…)
  • 数据共享:选择ZeroMQ,需要时间学习,但比在纯套接字上编写所有内容更简单、更容易。有一些替代方案,但有额外的依赖性,还有一些非常有用的好处(稍后将检查它们):RabbitMQRedis message broker,等等。选择ZMQ的原因是:快速、简单、优雅,而且只是一个库。(Knoww风险:我们的IT部门更喜欢RabbitMQ,但问题会在稍后出现:-))
  • 控制引擎:现在这个答案很明显:单独的python代码(可以作为JN代码进行测试,但很容易转换为pure.py并对其进行调度)。这个模块可以通过ZMQ套接字与其他模块通信:healthcheck、发送新参数、命令等

相关问题 更多 >