You've already forked MicroPythonOS
mirror of
https://github.com/m5stack/MicroPythonOS.git
synced 2026-05-20 11:51:27 -07:00
move files and fix weird workaround with proper more stack
This commit is contained in:
@@ -0,0 +1,94 @@
|
||||
import json
|
||||
import ssl
|
||||
import time
|
||||
import _thread
|
||||
|
||||
from nostr.filter import Filter, Filters
|
||||
from nostr.event import Event, EventKind
|
||||
from nostr.relay_manager import RelayManager
|
||||
from nostr.message_type import ClientMessageType
|
||||
|
||||
#filters = Filters([Filter(authors=[<a nostr pubkey in hex>], kinds=[EventKind.TEXT_NOTE])])
|
||||
#filters = Filters([Filter(authors="04c915daefee38317fa734444acee390a8269fe5810b2241e5e6dd343dfbecc9", kinds=[EventKind.TEXT_NOTE])])
|
||||
#timestamp = round(time.time()-50)
|
||||
#timestamp = round(time.time()) # going for zero events to check memory use
|
||||
|
||||
timetogoback = 100
|
||||
|
||||
import sys
|
||||
if sys.platform == "esp32":
|
||||
# on esp32, it needs this correction:
|
||||
timestamp = time.time() + 946684800 - timetogoback
|
||||
else:
|
||||
timestamp = round(time.time()-timetogoback)
|
||||
#timestamp = round(time.time()-1000)
|
||||
#timestamp = round(time.time()-5000)
|
||||
|
||||
#filters = Filters([Filter(authors="04c915daefee38317fa734444acee390a8269fe5810b2241e5e6dd343dfbecc9", kinds=[9735], since=timestamp)])
|
||||
filters = Filters([Filter(kinds=[9735], since=timestamp)])
|
||||
|
||||
subscription_id = "test" + str(round(time.time()))
|
||||
request = [ClientMessageType.REQUEST, subscription_id]
|
||||
json.dumps(request)
|
||||
request.extend(filters.to_json_array())
|
||||
message = json.dumps(request)
|
||||
# ["REQ", "ihopethisworks3", {"kinds": [1], "authors": "04c915daefee38317fa734444acee390a8269fe5810b2241e5e6dd343dfbecc9"}]
|
||||
print(f"sending this: {message}")
|
||||
|
||||
def printevents():
|
||||
import micropython
|
||||
print(f"at the start, thread stack used: {micropython.stack_use()}")
|
||||
print("relaymanager")
|
||||
relay_manager = RelayManager()
|
||||
#relay_manager.add_relay("wss://nostr-pub.wellorder.net")
|
||||
print("relaymanager adding")
|
||||
relay_manager.add_relay("wss://relay.damus.io")
|
||||
relay_manager.add_relay("wss://relay.primal.net")
|
||||
print("relaymanager subscribing")
|
||||
relay_manager.add_subscription(subscription_id, filters)
|
||||
print("opening connections") # after this, CPU usage goes high and stays there
|
||||
relay_manager.open_connections({"cert_reqs": ssl.CERT_NONE}) # NOTE: This disables ssl certificate verification
|
||||
time.sleep(2) # allow the connections to open
|
||||
print("publishing:")
|
||||
relay_manager.publish_message(message)
|
||||
time.sleep(2) # allow the messages to send
|
||||
print("printing events:")
|
||||
#while relay_manager.message_pool.has_events():
|
||||
# allowing 30 seconds for stuff to come in...
|
||||
for _ in range(30):
|
||||
time.sleep(1)
|
||||
print("checking pool....")
|
||||
try:
|
||||
event_msg = relay_manager.message_pool.get_event()
|
||||
#print(f"main code got event_msg: pubkey: {event_msg.event.public_key} created_at {event_msg.event.created_at}")
|
||||
print(f"main code got event_msg: pubkey: {event_msg.event.public_key} created_at {event_msg.event.created_at} with content '{event_msg.event.content}' and kind {event_msg.event.kind} and tags {event_msg.event.tags}")
|
||||
except Exception as e:
|
||||
#print(f"pool.get_event() got error: {e}")
|
||||
pass
|
||||
print("30 seconds passed, closing:")
|
||||
relay_manager.close_connections()
|
||||
|
||||
# new thread so REPL stays available
|
||||
# 12KB crashes here:
|
||||
# opening connections
|
||||
# [DEBUG 408724546] Starting run_forever
|
||||
# [DEBUG 408724546] Starting _async_main
|
||||
# [DEBUG 408724546] Reconnect interval set to 0s
|
||||
# [DEBUG 408724546] Started callback processing task
|
||||
# [DEBUG 408724546] Main loop iteration: self.running=True
|
||||
# [DEBUG 408724546] Connecting to wss://relay.damus.io
|
||||
# [DEBUG 408724547] Using SSL with no certificate verification
|
||||
# 24KB is fine
|
||||
# somehow, if I run this in a thread, I get: can't create thread" at File "/lib/nostr/relay_manager.py", line 48, in open_connections
|
||||
# tried stack sizes from 18KB up to 32KB
|
||||
# on unix/desktop, 24KB crashes, 26KB is fine
|
||||
_thread.stack_size(26*1024)
|
||||
_thread.start_new_thread(printevents, ())
|
||||
#printevents()
|
||||
|
||||
|
||||
#import gc
|
||||
#for _ in range(50):
|
||||
# collect = gc.collect()
|
||||
# print(f"MEMFREE: {gc.mem_free()}")
|
||||
# time.sleep(1)
|
||||
@@ -0,0 +1,23 @@
|
||||
import json
|
||||
import ssl
|
||||
import time
|
||||
from nostr.event import Event
|
||||
from nostr.relay_manager import RelayManager
|
||||
from nostr.message_type import ClientMessageType
|
||||
from nostr.key import PrivateKey
|
||||
|
||||
relay_manager = RelayManager()
|
||||
relay_manager.add_relay("wss://nostr-pub.wellorder.net")
|
||||
relay_manager.add_relay("wss://relay.damus.io")
|
||||
relay_manager.open_connections({"cert_reqs": ssl.CERT_NONE}) # NOTE: This disables ssl certificate verification
|
||||
time.sleep(5) # allow the connections to open
|
||||
|
||||
private_key = PrivateKey()
|
||||
|
||||
event = Event("Hello Nostr")
|
||||
private_key.sign_event(event)
|
||||
|
||||
relay_manager.publish_event(event)
|
||||
time.sleep(1) # allow the messages to send
|
||||
|
||||
relay_manager.close_connections()
|
||||
@@ -0,0 +1,75 @@
|
||||
|
||||
import websocket
|
||||
import _thread
|
||||
import time
|
||||
|
||||
def on_open(wsapp):
|
||||
print(f"on_open works here")
|
||||
|
||||
def on_message(wsapp, message):
|
||||
print(f"got message: {message[0:20]}")
|
||||
|
||||
def on_ping(wsapp, message):
|
||||
print("Got a ping! A pong reply has already been automatically sent.")
|
||||
|
||||
def on_pong(wsapp, message):
|
||||
print("Got a pong! No need to respond")
|
||||
|
||||
|
||||
def on_error(wsapp, message):
|
||||
print(f"Got error: {message}")
|
||||
|
||||
|
||||
#wsapp = websocket.WebSocketApp("wss://testnet.binance.vision/ws/btcusdt@trade", on_message=on_message, on_ping=on_ping, on_pong=on_pong, on_error=on_error)
|
||||
|
||||
#wsapp = websocket.WebSocketApp("wss://echo.websocket.events", on_message=on_message, on_ping=on_ping, on_pong=on_pong, on_error=on_error)
|
||||
|
||||
wsapp = websocket.WebSocketApp("wss://relay.damus.io", on_message=on_message, on_ping=on_ping, on_pong=on_pong, on_error=on_error, on_open=on_open)
|
||||
|
||||
#wsapp = websocket.WebSocketApp("wss://relay.primal.net", on_message=on_message, on_ping=on_ping, on_pong=on_pong, on_error=on_error)
|
||||
|
||||
|
||||
def stress_test_thread():
|
||||
print("before run_forever")
|
||||
#wsapp.run_forever(ping_interval=30, ping_timeout=10)
|
||||
#wsapp.run_forever(ping_interval=300, ping_timeout=10, ping_payload="This is an optional ping payload")
|
||||
wsapp.run_forever()
|
||||
print("after run_forever")
|
||||
|
||||
|
||||
_thread.stack_size(32*1024)
|
||||
_thread.start_new_thread(stress_test_thread, ())
|
||||
|
||||
|
||||
time.sleep(5)
|
||||
print("sending it")
|
||||
# nothing:
|
||||
#wsapp.send_text('["REQ", "ihopethisworks3", {"kinds": [1], "authors": "04c915daefee38317fa734444acee390a8269fe5810b2241e5e6dd343dfbecc9"}]')
|
||||
#wsapp.send_text('["REQ", "ihopethisworks3", {"kinds": [1] }]')
|
||||
# this worked at some point:
|
||||
#wsapp.send_text('["REQ","index3",{"kinds":[9735]}]')
|
||||
#wsapp.send_text('["REQ","index3",{"kinds":[9735], "since": 1745086888}]')
|
||||
tosend = '["REQ","index3",{"kinds":[9735], "since": '
|
||||
tosend += str(round(time.time()-100))
|
||||
#tosend += str(round(time.time()-2000))
|
||||
#tosend += str(round(time.time()-10000))
|
||||
tosend += '}]'
|
||||
print(f"sending: {tosend}")
|
||||
wsapp.send_text(tosend)
|
||||
#1745086888
|
||||
#["REQ","index",{"kinds":[9735]}]
|
||||
|
||||
|
||||
print("waiting 30 seconds...")
|
||||
time.sleep(30)
|
||||
#print("sending again")
|
||||
#wsapp.send_text('again')
|
||||
|
||||
|
||||
time.sleep(25)
|
||||
#print("sending more")
|
||||
#wsapp.send_text('more')
|
||||
|
||||
wsapp.close()
|
||||
|
||||
|
||||
@@ -0,0 +1,57 @@
|
||||
|
||||
import websocket
|
||||
import _thread
|
||||
import time
|
||||
|
||||
def on_message(wsapp, message):
|
||||
print(f"got message: {message}")
|
||||
|
||||
def on_ping(wsapp, message):
|
||||
print("Got a ping! A pong reply has already been automatically sent.")
|
||||
|
||||
def on_pong(wsapp, message):
|
||||
print("Got a pong! No need to respond")
|
||||
|
||||
|
||||
def on_error(wsapp, message):
|
||||
print(f"Got error: {message}")
|
||||
|
||||
|
||||
#wsapp = websocket.WebSocketApp("wss://testnet.binance.vision/ws/btcusdt@trade", on_message=on_message, on_ping=on_ping, on_pong=on_pong, on_error=on_error)
|
||||
|
||||
#wsapp = websocket.WebSocketApp("wss://echo.websocket.events", on_message=on_message, on_ping=on_ping, on_pong=on_pong, on_error=on_error)
|
||||
|
||||
wsapp = websocket.WebSocketApp("wss://relay.damus.io", on_message=on_message, on_ping=on_ping, on_pong=on_pong, on_error=on_error)
|
||||
|
||||
#wsapp = websocket.WebSocketApp("wss://relay.primal.net", on_message=on_message, on_ping=on_ping, on_pong=on_pong, on_error=on_error)
|
||||
|
||||
|
||||
def stress_test_thread():
|
||||
print("before run_forever")
|
||||
#wsapp.run_forever(ping_interval=30, ping_timeout=10)
|
||||
wsapp.run_forever(ping_interval=30, ping_timeout=10, ping_payload="This is an optional ping payload")
|
||||
print("after run_forever")
|
||||
|
||||
_thread.stack_size(32*1024)
|
||||
_thread.start_new_thread(stress_test_thread, ())
|
||||
|
||||
time.sleep(5)
|
||||
print("sending it")
|
||||
#wsapp.send_text('["REQ", "ihopethisworks3", {"kinds": [1], "authors": "04c915daefee38317fa734444acee390a8269fe5810b2241e5e6dd343dfbecc9"}]')
|
||||
#wsapp.send_text('["REQ", "ihopethisworks3", {"kinds": [1] }]')
|
||||
wsapp.send_text('["REQ","index2",{"kinds":[9735]}]')
|
||||
#["REQ","index",{"kinds":[9735]}]
|
||||
|
||||
|
||||
time.sleep(15)
|
||||
print("sending again")
|
||||
wsapp.send_text('again')
|
||||
|
||||
|
||||
time.sleep(25)
|
||||
print("sending more")
|
||||
wsapp.send_text('more')
|
||||
|
||||
wsapp.close()
|
||||
|
||||
|
||||
@@ -0,0 +1,68 @@
|
||||
|
||||
import websocket
|
||||
import _thread
|
||||
import time
|
||||
|
||||
def on_message(wsapp, message):
|
||||
print(f"got message: {message}")
|
||||
|
||||
def on_ping(wsapp, message):
|
||||
print("Got a ping! A pong reply has already been automatically sent.")
|
||||
|
||||
def on_pong(wsapp, message):
|
||||
print("Got a pong! No need to respond")
|
||||
|
||||
|
||||
def on_error(wsapp, message):
|
||||
print(f"Got error: {message}")
|
||||
|
||||
|
||||
#wsapp = websocket.WebSocketApp("wss://testnet.binance.vision/ws/btcusdt@trade", on_message=on_message, on_ping=on_ping, on_pong=on_pong, on_error=on_error)
|
||||
|
||||
#wsapp = websocket.WebSocketApp("wss://echo.websocket.events", on_message=on_message, on_ping=on_ping, on_pong=on_pong, on_error=on_error)
|
||||
|
||||
wsapp = websocket.WebSocketApp("wss://relay.damus.io", on_message=on_message, on_ping=on_ping, on_pong=on_pong, on_error=on_error)
|
||||
|
||||
#wsapp = websocket.WebSocketApp("wss://relay.primal.net", on_message=on_message, on_ping=on_ping, on_pong=on_pong, on_error=on_error)
|
||||
|
||||
|
||||
def stress_test_thread():
|
||||
print("before run_forever")
|
||||
#wsapp.run_forever(ping_interval=30, ping_timeout=10)
|
||||
#wsapp.run_forever(ping_interval=300, ping_timeout=10, ping_payload="This is an optional ping payload")
|
||||
wsapp.run_forever()
|
||||
print("after run_forever")
|
||||
|
||||
_thread.stack_size(32*1024)
|
||||
_thread.start_new_thread(stress_test_thread, ())
|
||||
|
||||
time.sleep(5)
|
||||
print("sending it")
|
||||
# nothing:
|
||||
#wsapp.send_text('["REQ", "ihopethisworks3", {"kinds": [1], "authors": "04c915daefee38317fa734444acee390a8269fe5810b2241e5e6dd343dfbecc9"}]')
|
||||
#wsapp.send_text('["REQ", "ihopethisworks3", {"kinds": [1] }]')
|
||||
# this worked at some point:
|
||||
#wsapp.send_text('["REQ","index3",{"kinds":[9735]}]')
|
||||
#wsapp.send_text('["REQ","index3",{"kinds":[9735], "since": 1745086888}]')
|
||||
tosend = '["REQ","index3",{"kinds":[9735], "since": '
|
||||
tosend += str(round(time.time()-1000))
|
||||
tosend += '}]'
|
||||
print(f"sending: {tosend}")
|
||||
wsapp.send_text(tosend)
|
||||
#1745086888
|
||||
#["REQ","index",{"kinds":[9735]}]
|
||||
|
||||
|
||||
print("waiting 30 seconds...")
|
||||
time.sleep(30)
|
||||
#print("sending again")
|
||||
#wsapp.send_text('again')
|
||||
|
||||
|
||||
time.sleep(25)
|
||||
#print("sending more")
|
||||
#wsapp.send_text('more')
|
||||
|
||||
wsapp.close()
|
||||
|
||||
|
||||
Reference in New Issue
Block a user