Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google app engine gevent workers可以在python 3应用程序引擎标准环境中使用吗?_Google App Engine_Gunicorn_Gevent_Google App Engine Python - Fatal编程技术网

Google app engine gevent workers可以在python 3应用程序引擎标准环境中使用吗?

Google app engine gevent workers可以在python 3应用程序引擎标准环境中使用吗?,google-app-engine,gunicorn,gevent,google-app-engine-python,Google App Engine,Gunicorn,Gevent,Google App Engine Python,尝试使用它们会导致以下错误: Traceback (most recent call last): File "/env/lib/python3.7/site-packages/gunicorn/arbiter.py", line 583, in spawn_worker worker.init_process() File "/env/lib/python3.7/site-packages/gunicorn/workers/ggevent.py", line 196, in i

尝试使用它们会导致以下错误:

Traceback (most recent call last):
  File "/env/lib/python3.7/site-packages/gunicorn/arbiter.py", line 583, in spawn_worker
    worker.init_process()
  File "/env/lib/python3.7/site-packages/gunicorn/workers/ggevent.py", line 196, in init_process
    self.patch()
  File "/env/lib/python3.7/site-packages/gunicorn/workers/ggevent.py", line 75, in patch
    fileno=s.sock.fileno()))
  File "/env/lib/python3.7/site-packages/gevent/_socket3.py", line 114, in __init__
    self._sock = self._gevent_sock_class(family, type, proto, fileno)
OSError: [Errno 92] Protocol not available: 'protocol'
python 3环境中是否不支持套接字?这就是它不起作用的原因吗

我的应用程序在其他web服务器上花费了大量的时间,因此使用异步工作程序是获得良好性能的必要条件。与此同时,我将尝试改用
eventlet
workers

编辑:包括更多关于用法的上下文

app.yaml

runtime: python37
instance_class: F2

entrypoint: gunicorn -c gunicorn.conf.py -b :$PORT my_project.server:app
gunicorn.conf.py

# Recommended number of workers based on instance size:
# https://cloud.google.com/appengine/docs/standard/python3/runtime#entrypoint_best_practices
workers = 2
# Use an asynchronous worker as most of the work is waiting for websites to load
worker_class = 'gevent'
因为是在gunicorn发布期间,我不相信应用程序定义上下文会有用。但是为了完整性,我正在启动一个基本的flask应用程序。比如:

my_项目/server.py

from flask import Flask

from my_project.handlers import run

app = Flask(__name__)
app.register_blueprint(run, url_prefix='/run')

我也犯了同样的错误。我认为如果我们想使用gevent,我们仅限于在GKE上运行GAE Flexible或Cloud

GAE标准在沙箱()中运行,并且一些操作受到限制(我注意到这个正在尝试的云运行与gevent有相同的问题)

您看到的错误是:

Container Sandbox Limitation: Unsupported syscall 
getsockopt(0x5,0x1,0x26,0x7e11bd8ddf20,0x7e11bd8ddf24,0x4)

你能举例说明你是如何使用gevent的吗?添加了一些上下文,谢谢你的快速回复!如果还有什么有用的,请告诉我。有一个关于gevent工人的问题,但我相信它不再相关,因为相关问题已经结束。谢谢,我可以复制这个。现在看看,我在gevent、AppEngineStandard和python3上也有同样的错误。我还使用eventlet作为worker类进行了测试,但它也不能很好地工作。是的,gunicorn的eventlet worker非常无用,因为它实际上没有修补任何阻塞调用(请参阅)。我们最终切换到appengine flex(出于其他原因),这允许我们现在使用gevent worker。如果您想查看我们的设置,请在此处查看
prod.yaml
gunicorn.conf.py
gevent\u grpc\u worker.py