gpt4 book ai didi

python - 在线程/进程和旁边的另一个守护进程中启动 python 瓶

转载 作者:太空宇宙 更新时间:2023-11-04 09:12:52 26 4
gpt4 key购买 nike

好吧,所以这可能有点不正统或者我只是愚蠢或两者兼而有之:)

我正在尝试一个非常简单的设置,我在一个 Process 实例中启动一个 bottle 服务器,并在另一个实例中启动一个小型 TFTP 服务器。

#!/usr/bin/env python
import bottle
import sys
import tftpy
from multiprocessing import Process

def main():
try:
t = Process(target=bottle.run(host='0.0.0.0', port=8080))
t.daemon = True
t.start()
t.join()
h = Process(target=tftpy.TftpServer('/srv/tftp').listen('0.0.0.0', 69))
h.start()
h.join()

except KeyboardInterrupt:
sys.stdout.write("Aborted by user.\n")
sys.exit(1)

if __name__ == "__main__":
main()

除非我完全疯了,否则我希望它们并行启动。实际上,发生的事情是 Bottle 启动并锁住了整个东西。如果我退出 bottle,TFTP 守护进程就会启动。

我还对 threading 模块尝试了类似的方法,结果大致相同。

我做错了什么?

最佳答案

有几个问题:

  • 您在主线程中调用 run()。您应该改为在 args 中传递参数:

    Process(target=bottle.run, kwargs=dict(host='0.0.0.0', port=8080))
  • 您调用 t.join(),它会阻塞直到 t 进程在 h.start() 之前结束。改为在所有进程启动后加入

  • bottle,tftpy 可能与多处理模块不兼容。如果是这样,您可以尝试子流程模块

关于python - 在线程/进程和旁边的另一个守护进程中启动 python 瓶,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13021762/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com