[英]How to stop/kill a thread python on Heroku?
在本地,在 Windows 上,我可以停止我的线程引发异常:
def raise_exception_in_thread(t:Thread):
ctypes.pythonapi.PyThreadState_SetAsyncExc(ctypes.c_long(t.ident), ctypes.py_object(SystemExit))
但是,在 Heroku 上,我的线程不会停止。
我试过了 :
ctypes.pythonapi.PyThreadState_SetAsyncExc(t.native_id, ctypes.py_object(SystemExit))
ctypes.pythonapi.PyThreadState_SetAsyncExc(t.ident, ctypes.py_object(SystemExit))
ctypes.pythonapi.PyThreadState_SetAsyncExc(ctypes.c_ulong(t.native_id), ctypes.py_object(SystemExit))
ctypes.pythonapi.PyThreadState_SetAsyncExc(ctypes.c_ulong(t.ident), ctypes.py_object(SystemExit))
ctypes.pythonapi.PyThreadState_SetAsyncExc(ctypes.c_long(t.native_id), ctypes.py_object(SystemExit))
如果有帮助,我找到了解决方案:
我使用 async_mode 'gevent' 在 heroku 上部署了一个 Flask/SocketIO 应用程序:
app = Flask(__name__)
socketio = SocketIO(app, async_mode='gevent')
档案:
web: gunicorn -k gevent -w 1 main:app
并且能够通过引发异常来停止heroku上的线程,
我必须使用 async_mode 'threading' 在 heroku 上部署 Flask/SocketIO 应用程序:
app = Flask(__name__)
socketio = SocketIO(app, async_mode='threading')
档案:
web: gunicorn -w 1 --threads 100 main:app
https://flask-socketio.readthedocs.io/en/latest/api.html
https://flask-socketio.readthedocs.io/en/latest/deployment.html
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.