찾다

 >  Q&A  >  본문

linux - 如何查看python脚本自动退出原因?

使用gunicorn+flask框架,同时通过apscheduler实现对一款爬虫的定时调用,但是在这其中遇到了一个问题,如下:
1,我利用shell终端,通过gunicorn -c直接运行,然后通过flask构造url调用爬虫,并在终端观察输出信息,可以完美调用爬虫。但是当我运行gunicorn -c之后,关闭终端,则爬虫不能完美运行,通过对爬虫调试,发现在运行一段时间后就被终止。
2,之后我在爬虫中使用os.system('nohup python spider.py &'),并且一直打开终端可以完美运行,但是在关闭终端的情况下,又无法执行到底。
所以请问大家怎么来看一下这个脚本运行中为何自动结束。或者说产生的原因是什么。

迷茫迷茫2813일 전1224

모든 응답(4)나는 대답할 것이다

  • ringa_lee

    ringa_lee2017-04-18 10:08:12

    프로세스가 터미널을 떠나지 않았습니다. 터미널이 닫힌 후에는 터미널과 연결된 모든 하위 프로세스가 출력 없이 종료됩니다.
    spaider.py를 터미널의 제어를 벗어나 데몬 프로세스로 만드는 것이 좋습니다.

    회신하다
    0
  • 阿神

    阿神2017-04-18 10:08:12

    로깅

    회신하다
    0
  • 大家讲道理

    大家讲道理2017-04-18 10:08:12

    진짜 원인을 찾았습니다. 디버깅 중에 인쇄 출력이 너무 많아 캐시를 초과하여 프로세스가 종료되기 때문입니다.

    회신하다
    0
  • 高洛峰

    高洛峰2017-04-18 10:08:12

    백그라운드에서 프로세스를 실행하더라도 프로세스를 시작한 터미널에서 분리되지 않으므로 상위 프로세스 셸 터미널이 닫히고 하위 프로세스도 닫힙니다.

    해결책 1, Linux에서 프로세스를 데몬 프로세스로 프로그래밍하는 방법을 알려주는 Python 스크립트를 Linux에서 서비스 또는 데몬처럼 실행하는 방법을 참조할 수 있습니다. 샘플 프로그램이 꽤 길어서 마지막에 설명하겠습니다.

    해결책 2, 자체 프로세스를 데몬화할 수 있는 Python 라이브러리가 있고 그 수가 꽤 많습니다. 예를 들어 python-daemon입니다. 사용 예는 다음과 같습니다.

    으아아아

    추가 솔루션 1 처리:

    으아아아

    회신하다
    0
  • 취소회신하다