data
, оператор return
делает именно это. pip install janus
import asyncio
import janus
import sys
from watchdog.observers import Observer
from watchdog.events import FileSystemEventHandler
async def some_async_handler(queue):
while True:
try:
event = await queue.get()
print(event.event_type, event.src_path)
except asyncio.CancelledError:
break
class SomeEventHandler(FileSystemEventHandler):
def __init__(self, queue, *args, **kwargs):
self._queue = queue
super().__init__(*args, **kwargs)
def on_any_event(self, event):
self._queue.put(event)
if __name__ == "__main__":
path = sys.argv[1] if len(sys.argv) > 1 else '.'
loop = asyncio.get_event_loop()
queue = janus.Queue(loop=loop)
event_handler = SomeEventHandler(queue.sync_q)
observer = Observer()
observer.schedule(event_handler, path, recursive=True)
observer.start()
task = loop.create_task(some_async_handler(queue.async_q))
try:
loop.run_until_complete(task)
except KeyboardInterrupt:
task.cancel()
loop.run_until_complete(task)
observer.stop()
finally:
loop.close()
observer.join()
Ага, только строка не такая и так не работает.
replace
работает с любыми строками, и если стоит вопрос замены символа, то обращаться нужно именно к нему.И символ этот видно только в базе, в цсв его нет