Size: a a a

2020 June 05

DI

Danil Ivanov in SPb Python
Мне хватило оттуда репозиториев, сервисов и моделей
источник

A

Alexander in SPb Python
Спасибо, похоже то что нужно
источник

LB

Linus Buhler in SPb Python
Добрый всем день.
Столкнулся с проблемой при изучении асинхронного программирования в питоне. Есть однопоточный скрипт который простаивает в момент когда ожидает появления файла в определенной директории. Как указать питону, что в момент ожидания он может заниматься конкурентным потоком? Другими словами как указать питону что событием переключение для него будет НЕнахождение файла в директории и событием для возвращением к первоначальному потоку будет появления файла в директории?
источник

LB

Linus Buhler in SPb Python
Заранее прошу прощения за крестьянской бытовой сленг при описании проблемы, только только начинаю щупать азы асинхронного програмирования
источник

A

Alexander in SPb Python
Если нужно отслеживать появление/изменение файлов в директории, то я бы лучше посмотрел в сторону inotify. Если это линукс конечно
источник

LB

Linus Buhler in SPb Python
А если это протокол ftp
И на стороне скрипта убунту а на стороне сервера к которому идет обращения - windows?
источник

LB

Linus Buhler in SPb Python
Но спасибо за совет
Про inotify почитаю
источник

A

Alexander in SPb Python
Linus Buhler
А если это протокол ftp
И на стороне скрипта убунту а на стороне сервера к которому идет обращения - windows?
Ээээ, а как вообще можно через ftp узнать что файл появился? Сервер умеет уведомления такие присылать?
источник

LB

Linus Buhler in SPb Python
Ну, у меня костыль написан try-except конструкцию использую
Если выдает ошибку что файла нет - я просто заставляю его глянуть еще раз
источник

LB

Linus Buhler in SPb Python
Я знаю, решение из ряда вон
Самому стыдно, но это все что в тот момент мог выдать мой мозг
источник

A

Alexander in SPb Python
Чекайте в бесконечном цикле с периодическим asyncio.sleep
источник

A

Alexander in SPb Python
Самый простой способ
источник

LB

Linus Buhler in SPb Python
А способ посложнее?
Можно загрузить меня непонятными словами, я разберусь
источник

A

Alexander in SPb Python
Linus Buhler
А способ посложнее?
Можно загрузить меня непонятными словами, я разберусь
import asyncio

async def get_ftp_data():
   # тут проверка существования файла на FTP и попытка его скачать
   pass

async def main():
   while True:
       await get_ftp_data()
       await asyncio.sleep(5)

asyncio.run(main())

примерно так
источник

S

Stanislav in SPb Python
Linus Buhler
А способ посложнее?
Можно загрузить меня непонятными словами, я разберусь
Ну он простой не потому что плохой
источник

LB

Linus Buhler in SPb Python
Спасибо огромное.
Могу попросить помочь с последним вопросом?
Как я и говорил я только начал разбираться с асинхронкой и у меня встал вопрос. await фактически это переключатель между конкурентными async функциями, так?
источник

A

Alexander in SPb Python
Linus Buhler
Спасибо огромное.
Могу попросить помочь с последним вопросом?
Как я и говорил я только начал разбираться с асинхронкой и у меня встал вопрос. await фактически это переключатель между конкурентными async функциями, так?
await говорит циклу событий, что в этой точке цикл может переключиться на другую корутину. В принципе да, можно и сказать, что это некий переключатель
источник

A

Alexander in SPb Python
советую перечитать доку на сайте питона, она довольно доходчиво всё объясняет
источник

A

Alexander in SPb Python
ради интереса ещё можно исходники почитать, там тоже не особо сложно всё
источник

LB

Linus Buhler in SPb Python
Так и сделаю
Спасибо еще раз за помощь
источник