【发布时间】:2021-04-16 02:43:31
【问题描述】:
我是信号/操作系统的新手,所以请多多包涵。
我的任务是优雅地掌握子流程。
假设转换器是由 systemd 运行的服务。
当我通过sudo systemctl restart xyz@9090.service 重新启动服务时,我得到了以下输出跟踪,它看起来像子进程的内存地址。请你能帮我理解我怎样才能优雅地退出这个。
有关该计划的更多信息。 (主程序 -> 一个服务(TCPServer)作为线程运行 -> 几个池池(多处理池)(KINDA 自定义编写) 堆栈跟踪的输出附在此处。
Apr 15 22:34:31 ip-5555-555 transform_kafka.py[2963]: 4 ScalableBloomFilter::which_iter(char const*)
Apr 15 22:34:31 ip-5555-5553 transform_kafka.py[2963]: 5 ScalableBloomFilter::contains(char const*)
Apr 15 22:34:31 ip-5555-555 transform_kafka.py[2963]: 6 /usr/local/lib/python2.7/dist-packages/scalablebloomfilter.so(+0x3e97)
Apr 15 22:34:31 ip-5555-555 transform_kafka.py[2963]: 0 Utilities::logTrace(unsigned int, int)
Apr 15 22:34:31 ip-5555-555 transform_kafka.py[2963]: 7 /usr/bin/python(PyEval_EvalFrameEx+0x56a)
Apr 15 22:34:31 ip-5555-555 transform_kafka.py[2963]: 1 QuitHandler::quit(int)
Apr 15 22:34:31 ip-5555-555 transform_kafka.py[2963]: 8 /usr/bin/python(PyEval_EvalCodeEx+0x4ba)
Apr 15 22:34:31 ip-5555-555 transform_kafka.py[2963]: 9 /usr/bin/python(PyEval_EvalFrameEx+0x5c6c)
Apr 15 22:34:31 ip-5555-555 transform_kafka.py[2963]: 2 /lib/x86_64-linux-gnu/libc.so.6(+0x3f040)
Apr 15 22:34:31 ip-5555-555 transform_kafka.py[2963]: 10 /usr/bin/python(PyEval_EvalCodeEx+0x4ba)
Apr 15 22:34:31 ip-5555-555 transform_kafka.py[2963]: 3 /usr/bin/python(+0xcdae2)
Apr 15 22:34:31 ip-5555-555 transform_kafka.py[2963]: 11 /usr/bin/python(PyEval_EvalFrameEx+0x5c6c)
Apr 15 22:34:31 ip-5555-555 transform_kafka.py[2963]: 4 /usr/bin/python(PyDict_GetItem+0xa1)
Apr 15 22:34:31 ip-5555-555 transform_kafka.py[2963]: 12 /usr/bin/python(PyEval_EvalFrameEx+0x52f6)
Apr 15 22:34:31 ip-5555-555 transform_kafka.py[2963]: 5 /usr/bin/python(PyDict_GetItemString+0x24)
Apr 15 22:34:31 ip-5555-555 transform_kafka.py[2963]: 13 /usr/bin/python(PyEval_EvalCodeEx+0x4ba)
Apr 15 22:34:31 ip-5555-555 transform_kafka.py[2963]: 6 /usr/bin/python(+0xde26f)
Apr 15 22:34:31 ip-5555-555 transform_kafka.py[2963]: 2021-04-15 22:34:31 CRITICAL Common.cpp:logTrace():170 14 /usr/bin/python(PyEval_EvalFrameEx+0x569e)
Apr 15 22:34:31 ip-5555-555 transform_kafka.py[2963]: 2021-04-15 22:34:31 CRITICAL Common.cpp:logTrace():170 Obtained 20 stack frames.
Apr 15 22:34:31 ip-5555-555 transform_kafka.py[2963]: 7 /usr/bin/python(PyArg_ParseTupleAndKeywords+0x10b)
Apr 15 22:34:31 ip-5555-555 transform_kafka.py[2963]: 15 /usr/bin/python(PyEval_EvalFrameEx+0x52f6)
Apr 15 22:34:31 ip-5555-555 transform_kafka.py[2963]: Obtained 20 stack frames.
Apr 15 22:34:31 ip-5555-555 transform_kafka.py[2963]: 8 /usr/local/lib/python2.7/dist-packages/simplejson/_speedups.so(+0x8acf)
Apr 15 22:34:31 ip-5555-555 transform_kafka.py[2963]: 16 /usr/bin/python(PyEval_EvalCodeEx+0x4ba)
Apr 15 22:34:31 ip-5555-555 transform_kafka.py[2963]: 2021-04-15 22:34:31 CRITICAL Common.cpp:logTrace():170 Obtained 20 stack frames.
Apr 15 22:34:31 ip-5555-555 transform_kafka.py[2963]: 9 /usr/bin/python(PyEval_EvalFrameEx+0x54f0)
Apr 15 22:34:31 ip-5555-555 transform_kafka.py[2963]: 17 /usr/bin/python(+0x10de6c)
Apr 15 22:34:31 ip-5555-555 transform_kafka.py[2963]: 0 Utilities::logTrace(unsigned int, int)
Apr 15 22:34:31 ip-5555-555 transform_kafka.py[2963]: 10 /usr/bin/python(PyEval_EvalCodeEx+0x4ba)
Apr 15 22:34:31 ip-5555-555 transform_kafka.py[2963]: 18 /usr/bin/python(PyObject_Call+0x3e)
Apr 15 22:34:31 ip-5555-555 transform_kafka.py[2963]: 0 Utilities::logTrace(unsigned int, int)
Apr 15 22:34:31 ip-5555-555 transform_kafka.py[2963]: 1 QuitHandler::quit(int)
Apr 15 22:34:31 ip-5555-555 transform_kafka.py[2963]: 0 Utilities::logTrace(unsigned int, int)
Apr 15 22:34:31 ip-5555-555 transform_kafka.py[2963]: 2021-04-15 22:34:31 CRITICAL Common.cpp:logTrace():170 11 /usr/bin/python(PyEval_EvalFrameEx+0x569e)
Apr 15 22:34:31 ip-5555-555 transform_kafka.py[2963]: 19 /usr/bin/python(PyEval_EvalFrameEx+0x26b7)
Apr 15 22:34:31 ip-5555-555 transform_kafka.py[2963]: 2021-04-15 22:34:31 CRITICAL Common.cpp:logTrace():170 Obtained 20 stack frames.
Apr 15 22:34:31 ip-5555-555 transform_kafka.py[2963]: 1 QuitHandler::quit(int)
Apr 15 22:34:31 ip-5555-555 transform_kafka.py[2963]: 2 /lib/x86_64-linux-gnu/libc.so.6(+0x3f040)
Apr 15 22:34:31 ip-5555-555 transform_kafka.py[2963]: 1 QuitHandler::quit(int)
Apr 15 22:34:31 ip-5555-555 transform_kafka.py[2963]: 12 /usr/bin/python(PyEval_EvalCodeEx+0x4ba)
Apr 15 22:34:31 ip-5555-555 transform_kafka.py[2963]: Obtained 20 stack frames.
Apr 15 22:34:31 ip-5555-555 transform_kafka.py[2963]: 2 /lib/x86_64-linux-gnu/libc.so.6(+0x3f040)
Apr 15 22:34:31 ip-5555-555 transform_kafka.py[2963]: 2 /lib/x86_64-linux-gnu/libc.so.6(+0x3f040)
Apr 15 22:34:31 ip-5555-555 transform_kafka.py[2963]: 13 /usr/bin/python(PyEval_EvalFrameEx+0x569e)
Apr 15 22:34:31 ip-5555-555 transform_kafka.py[2963]: 3 BloomFilter::insert(char const*)
Apr 15 22:34:31 ip-5555-555 transform_kafka.py[2963]: 0 Utilities::logTrace(unsigned int,
目前我们有类似的东西
signal.signal(signal.SIGTERM, lambda _signal, _frame: x.stop())
def stop(self):
"""Stop running"""
self.logger.info("Stopping %s", self)
self.__running = False
self.consumer.close()
self.producer.flush()
self.__pool.terminate()
【问题讨论】:
标签: python operating-system multiprocessing signals systemd