- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在运行此python
代码,我试图运行socketio
flask
应用程序并传递ssl
证书文件:
from flask import Flask, render_template, request, session, Markup, current_app, jsonify
from flask_socketio import emit, SocketIO
import eventlet
from flask_babel import gettext
app = Flask(__name__)
app.config['SECRET_KEY'] = '123'
app.config['FILEDIR'] = 'static/_files/'
socketio = SocketIO(app)
if __name__ == '__main__':
try:
app_host = os.environ.get('APP_HOST')
app_port = os.environ.get('APP_PORT')
eventlet.wsgi.server(eventlet.wrap_ssl(eventlet.listen((app_host, int(app_port))),certfile ='selfsigned.crt', keyfile = 'selfsigned.key',server_side = True),app)
except Exception as e:
logger.error(e)
当我运行此代码时,它会抛出以下 SSL
错误:
(21755) wsgi starting up on https://12.34.56.78:5000
(21755) accepted ('12.34.56.79', 50021)
Traceback (most recent call last):
File "/usr/local/lib/python3.6/site-packages/eventlet/hubs/hub.py", line 458, in fire_timers
timer()
File "/usr/local/lib/python3.6/site-packages/eventlet/hubs/timer.py", line 58, in __call__
cb(*args, **kw)
File "/usr/local/lib/python3.6/site-packages/eventlet/greenthread.py", line 218, in main
result = function(*args, **kwargs)
File "/usr/local/lib/python3.6/site-packages/eventlet/wsgi.py", line 781, in process_request
proto.__init__(conn_state, self)
File "/usr/local/lib/python3.6/site-packages/eventlet/wsgi.py", line 335, in __init__
self.handle()
File "/usr/local/lib/python3.6/site-packages/eventlet/wsgi.py", line 368, in handle
self.handle_one_request()
File "/usr/local/lib/python3.6/site-packages/eventlet/wsgi.py", line 397, in handle_one_request
self.raw_requestline = self._read_request_line()
File "/usr/local/lib/python3.6/site-packages/eventlet/wsgi.py", line 380, in _read_request_line
return self.rfile.readline(self.server.url_length_limit)
File "/usr/local/lib/python3.6/socket.py", line 586, in readinto
return self._sock.recv_into(b)
File "/usr/local/lib/python3.6/site-packages/eventlet/green/ssl.py", line 204, in recv_into
return self._base_recv(nbytes, flags, into=True, buffer_=buffer)
File "/usr/local/lib/python3.6/site-packages/eventlet/green/ssl.py", line 225, in _base_recv
read = self.read(nbytes, buffer_)
File "/usr/local/lib/python3.6/site-packages/eventlet/green/ssl.py", line 139, in read
super(GreenSSLSocket, self).read, *args, **kwargs)
File "/usr/local/lib/python3.6/site-packages/eventlet/green/ssl.py", line 113, in _call_trampolining
return func(*a, **kw)
File "/usr/local/lib/python3.6/ssl.py", line 871, in read
return self._sslobj.read(len, buffer)
File "/usr/local/lib/python3.6/ssl.py", line 631, in read
v = self._sslobj.read(len, buffer)
ssl.SSLError: [SSL: HTTP_REQUEST] http request (_ssl.c:2217)
我想要的是这个应用程序应该通过 https
连接运行,但此错误阻止它运行。以下是我的 python 和包版本详细信息:
python 3.6.3
eventlet==0.22.1
Flask==0.12.2
Flask-SocketIO==2.9.3
最佳答案
看来向服务器发出的请求正在使用 http
而不是https
。您必须确保客户端也使用相同的 https
发出请求。协议(protocol)作为服务器。例如,在您的客户端代码中,您必须向 https://<server-ip>
发出请求而不是http://<server-ip>
关于python Flask SocketIO 使用 eventlet 抛出 SSL 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52306300/
我正在使用 eventlet celery 工作线程,想知道在我的任务之一中使用绿色线程池是否安全。 最佳答案 当然,这是安全的。万一您遇到任何问题,请在此处报告 https://github.com
我正在循环一个列表并对列表中的每个成员执行一些操作。如果某个成员花费了太多时间(在本例中为 1 秒),我打算跳过它。但是,try 语句内的 block 始终处于处理状态,并且永远不会超时。我不明白为什
我是 python 线程的新手,尝试使用 eventlet 线程,我编写了一个简单的程序来计算数字的平方和立方,并在其上发出两个 eventlet 线程。我的代码如下: import even
import eventlet def foo(): print('foo') def main(): eventlet.monkey_patch() pool = event
我编写了以下代码: import eventlet import requests import redis redis = redis.StrictRedis(host="localhost", p
既然Eventlet使用了绿色线程和异步I/O,那么在访问对象之前还需要设置锁吗?我的理解是 greenlets 都是一个线程的一部分,不需要锁定。谁能证实或否认这一点? 最佳答案 您的理解是正确的:
根据我的理解,线程不能并行执行(基于可用性和随机性执行),这就是使用 Eventlet 的原因。 如果 Eventlets 更适合并行性,为什么我们不能只使用 Python 的多处理模块。 我想到了执
我有 2 个 celery worker,它们通过 eventlet 进行池化,配置如下: celery multi start w1 w2 -A proj -l info --time-limit=
我对 eventlet 很陌生,对 sleep() 有一些疑问 我用一小段代码进行了测试。 一开始我spawn了3个greenthread,然后调用了greenthread.sleep(0),然后这3
当使用 --pool=eventlet 选项运行我的 celery worker 时,我从 amqplib.client_0_8.method_framing.read_method 收到了很多“IO
如果我使用具有 Eventlet 工作类型的 Gunicorn 部署 Django,并且只使用一个进程,那么在为 1000 个(默认)工作连接提供服务时会发生什么? Django 的哪些部分被复制到每
我想了解 eventlet.tpool 有什么用。文档说 tpool.execute() 允许您获取阻塞函数并在新线程中运行它。但是,tpool.execute() 方法本身会阻塞,直到线程完成!那么
作为mentioned in the celery docs ,对于事件 I/O(例如异步 HTTP 请求),eventlet 池应该比 prefork 池更快。 他们甚至提到了这一点 "In an
我想多线程发送邮件(使用 django 的 SMTPConnection 或者 smtplib 模块)。我希望有一个类似于 urllib2 的模块,我可以: import eventlet from
我有一个程序可以与 postgresql 服务器保持持久连接。假设由于网络问题导致连接被阻塞(可以通过关闭网络接口(interface)来模拟),使用 eventlet 调用查询的进程就会卡住。这也阻
****大家好 我正在使用 eventlet 来实现网络爬虫。我的代码是这样的 import eventlet urls = [ "http://deeplearning.stanford.e
我正在为数据分析任务编写网络用户界面。 这是它应该工作的方式: 在用户指定dataset和learning rate等参数后,我创建了一个新的task record,然后启动了这个任务的执行器异步(执
我在 celery workers 中使用 Python requests 进行大量(~10/秒)API 调用(包括 GET、POST、PUT、DELETE)。每个请求大约需要 5-10 秒才能完成。
我目前正在进行的项目使用 Flask-SocketIO 在我的 Raspberry Pi 和连接到它所服务的网站的客户端之间进行通信。但是,一旦我设置了一个或多个额外线程,就会发生错误。我使用猴子补丁
我需要注入(inject)线程级上下文信息以进行日志记录和调试。有人告诉我这可能不安全。 greenthread = worker_pool.spawn(run_worker, args, handl
我是一名优秀的程序员,十分优秀!