如何解决摇摇欲坠的Flask + nsq.run-> ValueError:信号仅在主线程中有效
尝试在一个过程中启动Flask和nsq阅读器。我收到错误消息
ValueError:信号仅在主线程中起作用
如何解决?
- 清单1-运行命令和错误
- 清单2-我的python文件
列表1。执行
(env) (base) user@vaio:~/Documents/app$ python app.py
Exception in thread Thread-1:
Traceback (most recent call last):
* Serving Flask app "app" (lazy loading)
* Environment: production
File "/home/user/anaconda3/lib/python3.8/threading.py",line 932,in _bootstrap_inner
WARNING: This is a development server. Do not use it in a production deployment.
Use a production WSGI server instead.
* Debug mode: off
self.run()
File "/home/user/anaconda3/lib/python3.8/threading.py",line 870,in run
* Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)
self._target(*self._args,**self._kwargs)
File "/home/user/Documents/app/env/lib/python3.8/site-packages/nsq/__init__.py",line 47,in run
signal.signal(signal.SIGTERM,_handle_term_signal)
File "/home/user/anaconda3/lib/python3.8/signal.py",in signal
handler = _signal.signal(_enum_to_int(signalnum),_enum_to_int(handler))
ValueError: signal only works in main thread
清单2。文件app.py
import nsq
import threading
from flask import Flask
NSQ_TCP_ADDRESSES = ['127.0.0.1:4150']
app = Flask(__name__)
def handler(message):
print (message.body)
return True
r = nsq.Reader(message_handler=handler,nsqd_tcp_addresses=NSQ_TCP_ADDRESSES,topic='counter',channel='reader',lookupd_poll_interval=15
)
if __name__ == '__main__':
t = threading.Thread(target=nsq.run)
t.start()
app.run()
t.join()
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。