
Research
/Security News
9 Malicious NuGet Packages Deliver Time-Delayed Destructive Payloads
Socket researchers discovered nine malicious NuGet packages that use time-delayed payloads to crash applications and corrupt industrial control systems.
.. image:: https://travis-ci.org/mopemope/meinheld.svg :target: https://travis-ci.org/mopemope/meinheld
This is a high performance python wsgi web server.
And Meinheld is a WSGI compliant web server. (PEP333 and PEP3333 supported)
You can also join us in meinheld mailing list_.
Meinheld requires Python 2.x >= 2.6 or Python 3.x >= 3.5 . and greenlet >= 0.4.5.
Meinheld supports Linux, FreeBSD, and macOS.
Install from pypi::
$ pip install -U meinheld
Install from source::
$ python setup.py install
Meinheld also supports working as a gunicorn worker.
To install gunicorn::
$ pip install -U gunicorn
simple wsgi app:
.. code:: python
from meinheld import server
def hello_world(environ, start_response):
status = b'200 OK'
res = b"Hello world!"
response_headers = [('Content-type', 'text/plain'), ('Content-Length', str(len(res)))]
start_response(status, response_headers)
return [res]
server.listen(("0.0.0.0", 8000))
server.run(hello_world)
with gunicorn. user worker class "egg:meinheld#gunicorn_worker" or "meinheld.gmeinheld.MeinheldWorker"::
$ gunicorn --workers=2 --worker-class="egg:meinheld#gunicorn_worker" gunicorn_test:app
NOTE: This feature is deprecated and will be removed in 2.0
Meinheld provides a simple continuation API (based on greenlet).
To enable continuations, use ContinuationMiddleware. get Continuation from wsgi environ.
Continuation objects have two very interesting methods, suspend and resume.
For example:
.. code:: python
from meinheld import server
from meinheld import middleware
def app(environ, start_response):
...
#get Continuation
c = environ.get(middleware.CONTINUATION_KEY, None)
...
if condtion:
waiters.append(c)
#suspend
c.suspend()
else:
for c in waiters:
# resume suspend function
c.resume()
...
server.listen(("0.0.0.0", 8000))
server.run(middleware.ContinuationMiddleware(hello_world))
For more info see http://github.com/mopemope/meinheld/tree/master/example/chat/
NOTE: This feature is deprecated and will be removed in 2.0
Meinheld support Websockets. use WebSocketMiddleware.
For example:
.. code:: python
from flask import Flask, render_template, request
from meinheld import server, middleware
SECRET_KEY = 'development key'
DEBUG=True
app = Flask(__name__)
app.config.from_object(__name__)
participants = set()
@app.route('/')
def index():
return render_template('websocket_chat.html')
@app.route('/chat')
def chat():
print request.environ
ws = request.environ.get('wsgi.websocket')
participants.add(ws)
try:
while True:
print "ws.wait()..."
m = ws.wait()
print "recv msg %s" % m
if m is None:
break
for p in participants:
print "send message %s" % m
p.send(m)
finally:
participants.remove(ws)
return ""
if __name__ == "__main__":
server.listen(("0.0.0.0", 8000))
server.run(middleware.WebSocketMiddleware(app))
NOTE: This feature is deprecated and will be removed in 2.0
Meinheld provides a few monkeypatches.
This patch replaces the standard socket module.
For Example:
.. code:: python
from meinheld import patch
patch.patch_all()
For more info see http://github.com/mopemope/meinheld/tree/master/example/patch/
For parsing HTTP requests, Meinheld uses Ryan Dahl's http-parser library.
(see https://github.com/joyent/http-parser)
It is built around the high performance event library picoev.
(see http://developer.cybozu.co.jp/kazuho/2009/08/picoev-a-tiny-e.html)
Meinheld uses sendfile(2), over wgsi.file_wrapper.
.. _meinheld mailing list: http://groups.google.com/group/meinheld
FAQs
High performance asynchronous Python WSGI Web Server
We found that meinheld demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Research
/Security News
Socket researchers discovered nine malicious NuGet packages that use time-delayed payloads to crash applications and corrupt industrial control systems.

Security News
Socket CTO Ahmad Nassri discusses why supply chain attacks now target developer machines and what AI means for the future of enterprise security.

Security News
Learn the essential steps every developer should take to stay secure on npm and reduce exposure to supply chain attacks.