Skip to content

Commit 949d458

Browse files
authored
Merge pull request #110 from dakotablair/dependency_upgrades
Remove eventlet in favor of gevent.
2 parents b045372 + ca1ead5 commit 949d458

11 files changed

Lines changed: 12054 additions & 89 deletions

File tree

frontend/v1/package-lock.json

Lines changed: 60 additions & 45 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

frontend/v1/package.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@
3030
"@material-ui/icons": "^4.2.1",
3131
"@material-ui/lab": "^4.0.0-alpha.29",
3232
"@material-ui/styles": "^4.3.3",
33-
"axios": "^1.6.0",
33+
"axios": "^1.8.4",
3434
"chart.js": "^2.9.4",
3535
"chartjs-plugin-streaming": "1.8.0",
3636
"chartjs-plugin-zoom": "^0.7.7",
@@ -50,6 +50,7 @@
5050
"redux-thunk": "^2.3.0",
5151
"reselect": "^4.0.0",
5252
"socket.io": "^4.8.1",
53+
"socket.io-adapter": "^2.5.5",
5354
"socket.io-client": "^4.8.1"
5455
}
5556
}

manager.py

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,22 @@
1+
# needed for using redis in this configuration
2+
from gevent import monkey
3+
monkey.patch_all()
4+
5+
import types
16
import subprocess
27
import sys
38
import os
49

5-
import eventlet
6-
eventlet.monkey_patch()
10+
# monkey patch flask to support old version of flask_script
11+
import flask
12+
13+
module_name = 'flask._compat'
14+
my_submodule = types.ModuleType(module_name)
15+
_compat = types.ModuleType(module_name)
16+
_compat.text_type = str
17+
sys.modules[module_name] = _compat
18+
setattr(flask, '_compat', _compat)
19+
flask._request_ctx_stack = None
720

821
from flask_script import Manager, Command, Server as _Server, Option
922

requirements.txt

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,25 @@
11
amqp==5.3.1
22
async-timeout==4.0.2
33
billiard==3.6.4.0
4+
blinker==1.8.2
45
celery==5.2.2
56
certifi==2024.7.4
67
cffi==1.15.1
78
charset-normalizer==3.3.0
89
click==8.1.7
910
Cython==3.0.4
1011
dnspython==2.6.1
11-
eventlet==0.35.2
12-
Flask==1.1.2
12+
flask==3.0.3
1313
Flask-Script==2.0.6
1414
Flask-SocketIO==2.9.6
1515
Flask-SQLAlchemy==2.5.1
1616
flit_core==3.9.0
17-
gevent==23.7.0
17+
gevent==24.2.1
1818
greenlet==2.0.2
1919
idna==3.7
20-
itsdangerous==2.0.1
21-
Jinja2==3.0.3
20+
importlib-metadata==8.5.0
21+
itsdangerous==2.2.0
22+
Jinja2==3.1.6
2223
kombu==5.4.2
2324
MarkupSafe==2.1.5
2425
pkgconfig==1.5.5
@@ -34,6 +35,7 @@ six==1.16.0
3435
SQLAlchemy==1.4.45
3536
urllib3==1.26.19
3637
vine==5.1.0
37-
werkzeug==0.16.0
38+
werkzeug==3.0.6
39+
zipp==3.20
3840
zope.event==4.6
3941
zope.interface==5.4.0

run_server.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
1+
# needed for using redis in this configuration
2+
from gevent import monkey
3+
monkey.patch_all()
4+
15
import sys
2-
import eventlet
3-
eventlet.monkey_patch()
46

57
from server import create_app, socketio
68

server/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99

1010
# Flask extensions
1111
db = SQLAlchemy()
12-
socketio = SocketIO()
12+
socketio = SocketIO(async_mode='gevent', engineio_logger=True)
1313
dm = DataModel()
1414
pdb = ProvDB(pdb_path=os.environ.get('PROVENANCE_DB', ''),
1515
pdb_sharded_num=int(os.environ.get('SHARDED_NUM', 0)),

server/api/anomalystats.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@
55
from ..models import AnomalyStat, AnomalyData, FuncStat, AnomalyStatQuery
66
from . import api
77
from ..tasks import make_async
8-
from ..utils import timestamp, url_for
98
from requests import post
109
from ..events import push_data
1110

server/server.py

Lines changed: 8 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,18 @@
1-
from flask import Blueprint, jsonify, render_template, Response, json
2-
# render_template, json, request, current_app
1+
from flask import (
2+
Blueprint,
3+
Response,
4+
current_app,
5+
jsonify,
6+
render_template,
7+
)
38

49
from . import stats as req_stats
510
from . import socketio, celery as mycelery
611
from . import pdb
7-
from .utils import url_for
812

913
main = Blueprint('main', __name__)
1014

1115

12-
@main.before_app_first_request
13-
def before_first_request():
14-
# for future usages
15-
pass
16-
17-
1816
@main.before_app_request
1917
def before_request():
2018
"""Update requests per second stats."""
@@ -27,7 +25,7 @@ def stop():
2725

2826
def get_inspect():
2927
from requests import get
30-
resp = get(url_for('tasks.get_info', _external=True))
28+
resp = get(current_app.url_for('tasks.get_info', _external=True))
3129
info = resp.json()
3230
return info
3331

server/static/js/bundle.js

Lines changed: 11947 additions & 1 deletion
Large diffs are not rendered by default.

server/tasks.py

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,11 @@
44
except ImportError: # pragma: no cover
55
from cStringIO import StringIO as BytesIO
66

7-
from flask import Blueprint, abort, g, request
7+
from flask import Blueprint, abort, current_app, g, request
88
from werkzeug.exceptions import InternalServerError
99
from celery import states
1010

1111
from . import celery
12-
from .utils import url_for
1312

1413
text_types = (str, bytes)
1514
try:
@@ -81,7 +80,14 @@ def wrapped(*args, **kwargs):
8180
# to obtain task status
8281
if t.state == states.PENDING or t.state == states.RECEIVED or \
8382
t.state == states.STARTED:
84-
return '', 202, {'Location': url_for('tasks.get_status', id=t.id)}
83+
app = Flask(__name__)
84+
app.register_blueprint(tasks_bp)
85+
with app.app_context() as actx:
86+
url = current_app.url_for('tasks.get_status', id=t.id)
87+
output = (
88+
'', 202, {'Location': url}
89+
)
90+
return output
8591

8692
# If the task already finished, return its return value as response
8793
# if isinstance(t.info, list):

0 commit comments

Comments
 (0)