nested schema fixes
This commit is contained in:
@@ -2,16 +2,20 @@ import asyncio
|
||||
import random
|
||||
import json
|
||||
|
||||
_sounds_by_species = {"dog": ["woof"], "cat": ["meow"], "bird": ["coo"]}
|
||||
_behaviors_by_species = {
|
||||
"dog": ["wagging_tail", "stretching", "showing_belly", "barking", "panting"],
|
||||
"cat": ["blep", "stretching", "showing_belly", "purring", "kneading"],
|
||||
"bird": ["head_tilt", "stretching", "chirping", "wing_flap"],
|
||||
}
|
||||
_subscribers: dict[int, list[asyncio.Queue]] = {}
|
||||
_worker_tasks: dict[int, asyncio.Task] = {}
|
||||
|
||||
|
||||
async def _sound_worker(pet_id: int, species: str):
|
||||
sounds = _sounds_by_species.get(species, ["woof"])
|
||||
async def _behavior_worker(pet_id: int, species: str):
|
||||
behaviors = _behaviors_by_species.get(species, ["wagging_tail"])
|
||||
while True:
|
||||
sound = random.choice(sounds)
|
||||
data = json.dumps({"sound": sound})
|
||||
action = random.choice(behaviors)
|
||||
data = json.dumps({"action": action})
|
||||
queues = _subscribers.get(pet_id, [])
|
||||
for q in queues:
|
||||
await q.put(data)
|
||||
@@ -22,7 +26,7 @@ def _ensure_worker(pet_id: int, species: str):
|
||||
if pet_id not in _worker_tasks or _worker_tasks[pet_id].done():
|
||||
_subscribers.setdefault(pet_id, [])
|
||||
_worker_tasks[pet_id] = asyncio.create_task(
|
||||
_sound_worker(pet_id, species)
|
||||
_behavior_worker(pet_id, species)
|
||||
)
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user