2017-11-20 1 views
1

저는 Flask를 통해 제공되는 Python 코드로 데이터를 제공하는 HTML 웹 페이지를 개발했습니다. win32service 패키지를 사용하여 Windows에서이 플라스크 코드를 서비스로 실행하려고합니다. (Python3.6에서 코드화 됨) python tryflask.py debug 명령으로 플라스크 코드를 cmd에서 실행하면 포트 번호 등이있는 IP에서 실행중인 페이지가 표시됩니다 (http://0.0.0.0:5000에서 실행). 그러나 웹 페이지에는 아무 것도 표시되지 않습니다. 404 오류가 있습니다. 어디서 잘못 가고 있습니까? 또한, 나는 플라스크 코드에 "def 슬라이드()"기능을 입력하지 않는다고 생각했습니다.Python을 서비스로 실행하는 중에 '404 찾을 수 없음'오류가 발생했습니다.

다음은 플라스크 프로그램입니다.

import flask 
from flask import Flask, render_template, redirect 
from extract import * 
import sys 
from flask import request 
import win32serviceutil 
import win32service 
import win32event 
import servicemanager 
import socket 

app = Flask(__name__) 
@app.route('/slideshow') 
def slides(): 
    print ("Hello")   //Not getting printed 
    ext_obj=extract_news() 
    hntop = ext_obj.hntop() 
    br=ext_obj.breaking() 

    ext_tweet= ext_obj.extract_tweet() 
    tweet1=ext_obj.tweet1() 
    tweet2=ext_obj.tweet2() 
    return render_template('exampleslide.html', hntop=hntop, br=br, tweet1=tweet1, tweet2=tweet2,) 

@app.route('/newspage', methods = ['GET','POST']) 
def loadhome(): 
    if request.method == 'POST': 
     ext_obj=extract_news() 
     hn=ext_obj.hacker_news() 
     tp=ext_obj.hacker_news() 
     return render_template('home.html',tp=tp,hn=hn) 

def start_flask(): 
    print("Starting flask")  //Printing 
    app.run('0.0.0.0',port=5000) 

class AppServerSvc (win32serviceutil.ServiceFramework): 
    _svc_name_ = "newsslides" 
    _svc_display_name_ = "newsslides" 

    def __init__(self,args): 
     win32serviceutil.ServiceFramework.__init__(self,args) 
     self.hWaitStop = win32event.CreateEvent(None,0,0,None) 
     socket.setdefaulttimeout(6000) 

    def SvcStop(self): 
     self.ReportServiceStatus(win32service.SERVICE_STOP_PENDING) 
     win32event.SetEvent(self.hWaitStop) 

    def SvcDoRun(self): 
     servicemanager.LogMsg(servicemanager.EVENTLOG_INFORMATION_TYPE, 
           servicemanager.PYS_SERVICE_STARTED, 
           (self._svc_name_,'')) 
     self.ReportServiceStatus(win32service.SERVICE_RUNNING) 
     print ("Starting service")  //Printing 
     start_flask() 

if __name__ == '__main__': 
    win32serviceutil.HandleCommandLine(AppServerSvc) 

모든 도움을 주시면 감사하겠습니다. 미리 감사드립니다!

+0

당신이 HTTP'로 이동하면 어떻게됩니까 : @Ken 5000/slideshow' –

+0

: //0.0.0.0 이 을 찾을 수 없음 : 나는 다음과 같은 오류가 발생하여 start_flask 방법의 바닥이 추가 요청한 URL을 서버에서 찾을 수 없습니다. 수동으로 URL을 입력 한 경우 철자를 확인하고 다시 시도하십시오. – Pooja

+0

'http : //127.0.0.1 : 5000/slideshow'은 무엇입니까 –

답변

1

Windows 서비스를 실행하는 경우 DoRun 함수는 절대 반환하지 않을 수 있습니다. 그렇지 않으면 서비스가 본질적으로 중지됩니다.

while True: 
    time.sleep(30) 
관련 문제