Skip to content

Commit 0f15676

Browse files
Improve cpu usage on message waiting.
1 parent 6616f06 commit 0f15676

File tree

4 files changed

+21
-12
lines changed

4 files changed

+21
-12
lines changed

bridge_hooks.py

-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
from flask import Flask, request
22
import http.client
33
import argparse
4-
import threading
54
import sys
65
import traceback
76
from PythonBridge import bridge_globals

flask_platform.py

+8-5
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
from PythonBridge import bridge_globals, json_encoder, bridge_utils
66
import sys
77
import logging
8+
import requests
89

910
class FlaskMsgService:
1011

@@ -18,6 +19,8 @@ def __init__(self, port, pharo_port, feed_callback):
1819
self.feed_callback = feed_callback
1920
self.app = Flask('PythonBridge')
2021
self.app.use_reloader=False
22+
self.session = requests.Session()
23+
self.session.trust_env = True
2124

2225
@self.app.route("/ENQUEUE", methods=["POST"])
2326
def eval_expression():
@@ -56,11 +59,11 @@ def send_async_message(self, msg):
5659
def send_sync_message(self, msg):
5760
msg['__sync'] = bridge_utils.random_str()
5861
bridge_globals.logger.log("SYNC_MSG: " + json.dumps(msg))
59-
conn = http.client.HTTPConnection("localhost", str(self.pharo_port))
60-
conn.request("POST", "/" + msg["type"], json.dumps(msg), {
61-
"Content-type": "application/json",
62-
"Accept": "text/plain"})
63-
response = str(conn.getresponse().read().decode())
62+
response = self.session.post(
63+
'http://localhost:' + str(self.pharo_port) + '/' + msg['type'],
64+
data=json.dumps(msg),
65+
headers={'content-type': 'application/json'},
66+
allow_redirects=True).content.decode('utf-8')
6467
bridge_globals.logger.log("SYNC_ANS: " + response)
6568
return json.loads(response)
6669

msgpack_socket_platform.py

+13-4
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import _thread
44
import threading
55
import time
6+
import sys
67
from PythonBridge import bridge_globals, stoppable_thread, msgpack_serializer
78
from uuid import uuid1
89

@@ -28,12 +29,20 @@ def set_handler(self, msg_type, async_handler):
2829

2930
def prim_handle(self):
3031
try:
32+
bridge_globals.logger.log("loop func")
3133
data = self.client.recv(2048)
32-
self.unpacker.feed(data)
33-
for msg in self.unpacker:
34-
self.prim_handle_msg(msg)
34+
if len(data) == 0:
35+
time.sleep(0.005)
36+
else:
37+
self.unpacker.feed(data)
38+
for msg in self.unpacker:
39+
bridge_globals.logger.log("prim handle message")
40+
self.prim_handle_msg(msg)
3541
except OSError:
36-
self.thread.stop()
42+
bridge_globals.logger.log("OSError: " + str(err))
43+
self.stop()
44+
sys.exit()
45+
exit(-1)
3746
except Exception as err:
3847
bridge_globals.logger.log("ERROR message: " + str(err))
3948

python_bridge.py

-2
Original file line numberDiff line numberDiff line change
@@ -127,10 +127,8 @@ def run_bridge():
127127

128128
bridge_globals.pharoPort = args["pharo"]
129129
if args["log"]:
130-
print("YES LOG")
131130
bridge_globals.logger = Logger()
132131
else:
133-
print("NO LOG")
134132
bridge_globals.logger = NoLogger()
135133
bridge_globals.pyPort = args["port"]
136134
bridge_globals.globalCommandList = PythonCommandList()

0 commit comments

Comments
 (0)