python在线程中结束主程序_在单独的线程中启动Flask应用程序

我目前正在开发一个Python应用程序,希望在该应用程序上查看实时统计信息。我想使用Flask它以使其易于使用和理解。

问题是我的Flask服务器应该在我的Python应用程序的最开始处启动,而在最末尾停止。它看起来应该像这样:

def main():

""" My main application """

from watcher.flask import app

# watcher.flask define an app as in the Quickstart flask documentation.

# See: http://flask.pocoo.org/docs/0.10/quickstart/#quickstart

app.run() # Starting the flask application

do_my_stuff()

app.stop() # Undefined, for the idea

因为我需要我的应用程序上下文(用于统计),所以不能使用multiprocessing.Process。然后,我尝试使用threading.Thread,但是Werkzeug似乎不喜欢它:

* Running on http://0.0.0.0:10079/

Exception in thread Flask Server:

Traceback (most recent call last):

File "/usr/lib/python2.7/threading.py", line 810, in __bootstrap_inner

self.run()

File "/usr/lib/python2.7/threading.py", line 763, in run

self.__target(*self.__args, **self.__kwargs)

File ".../develop-eggs/watcher.flask/src/watcher/flask/__init__.py", line 14, in _run

app.run(host=HOSTNAME, port=PORT, debug=DEBUG)

File ".../eggs/Flask-0.10.1-py2.7.egg/flask/app.py", line 772, in run

run_simple(host, port, self, **options)

File ".../eggs/Werkzeug-0.7-py2.7.egg/werkzeug/serving.py", line 609, in run_simple

run_with_reloader(inner, extra_files, reloader_interval)

File ".../eggs/Werkzeug-0.7-py2.7.egg/werkzeug/serving.py", line 524, in run_with_reloader

signal.signal(signal.SIGTERM, lambda *args: sys.exit(0))

ValueError: signal only works in main thread

不在主线程中运行Flask怎么办?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值