@ru_python

Страница 9009 из 9768
Jenish
12.05.2019
19:26:49
LEXERS = [item for item in get_all_lexers() if item[1]] не могу понять что тут делает условие if item[1] ?

Jenish
12.05.2019
19:30:29
Существует вероятно
элемент существует в массиве ?

Oleg
12.05.2019
19:31:14
LEXERS = [item for item in get_all_lexers() if item[1]] не могу понять что тут делает условие if item[1] ?
get_all_lexers, видимо, возвращает тебе список из списков. Если item[1] можно интерпретировать как True, то в результрующий список попадёт item

Google
Oleg
12.05.2019
19:31:27
А вообще, можно запустить код и проверить

?? Eugene
12.05.2019
19:31:43
элемент существует в массиве ?
Проверка на то, что элемент truthy

Jenish
12.05.2019
19:32:22
А вообще, можно запустить код и проверить
проверял, выдает полный массив

Oleg
12.05.2019
19:32:49
проверял, выдает полный массив
Значит у тебя в кажом item - item[1] - это truthy

Jenish
12.05.2019
19:33:30
т.е если в нем существует 2 элемент ?

Jenish
12.05.2019
19:35:22
список кортежей в кортежах

[ ('YAML+Jinja', ('yaml+jinja', 'salt', 'sls'), ('*.sls',), ('text/x-yaml+jinja', 'text/x-sls')), ('YAML', ('yaml',), ('*.yaml', '*.yml'), ('text/x-yaml',)) , ('Zephir', ('zephir',), ('*.zep',), ())]

спасибо)

Dmitry
12.05.2019
19:51:32
Привет. Я получаю ошибку, когда пытаюсь хостить flask-приложение с помощью uwsgi. Кто-нибудь может помочь?

Вызов uwsgi: uwsgi ./socket-uwsgi.ini socket-uwsgi.ini: [uwsgi] socket = 0.0.0.0:9000 protocol = uwsgi wsgi-file = app.py callable = app flask-приложение (app.py): from flask import Flask from flask_sqlalchemy import SQLAlchemy from .config import db_host, db_name, db_user, db_password from .routes.list import list from .routes.book import book app = Flask(__name__) app.config["SQLALCHEMY_DATABASE_URI"] = "mysql://{}:{}@{}/{}".format(db_user, db_password, db_host, db_name) db = SQLAlchemy(app) app.register_blueprint(list, url_prefix="/list/") app.register_blueprint(book, url_prefix="/book/")

Ошибка:

--- no python application found, check your startup logs for errors ---

Google
Oleg
12.05.2019
20:14:47
Ребят, помогите с pipes, пожалуйста. Создал два пайпа in_fd, out_fd = os.pipe() Создал дескрипторы для каждого in_pipe = os.fdopen(in_fd, "w") out_pipe = os.fdopen(out_fd, "r") Пытаюсь читать с out_pipe - получаю Bad file descriptor. А ещё пытаюсь их открыть одновременно для чтения и записи каждый - получаю File or stream not seekable

Aragaer
12.05.2019
20:15:01
эм

Dan
12.05.2019
20:15:15
Я конечно не питон эксперт

Aragaer
12.05.2019
20:15:17
это один пайп, а не два

Dan
12.05.2019
20:15:25
Но у тебя in == out

Aragaer
12.05.2019
20:15:32
нет, не равны

Dan
12.05.2019
20:16:00
Aragaer
12.05.2019
20:16:00
но у тебя они не в том порядке

из in надо читать, а в out писать

Oleg
12.05.2019
20:17:42
Сейчас я скину весь код, там немного

Aragaer
12.05.2019
20:18:09
>>> import os >>> in_fd, out_fd = os.pipe() >>> in_f = os.fdopen(in_fd, "r") >>> out_f = os.fdopen(out_fd, "w") >>> out_f.write("hello") 5 >>> out_f.close() >>> in_f.read() 'hello\n'

Oleg
12.05.2019
20:18:23
https://pastebin.com/n02B0b85

Aragaer
12.05.2019
20:18:42
os.pipe() Create a pipe. Return a pair of file descriptors (r, w) usable for reading and writing, respectively.

пайп односторонний

ты создаешь один пайп, получаешь два конца

из первого конца можно читать то, что записано во второй

Google
Slam! 538
12.05.2019
20:19:35
это как socket.socketpair

Aragaer
12.05.2019
20:19:51
нет, сокеты как раз двусторонние

Oleg
12.05.2019
20:19:58
os.pipe() Create a pipe. Return a pair of file descriptors (r, w) usable for reading and writing, respectively.
То есть мне нужно не открывать пайп по 4 раза, а просто использовать два пайап?

Aragaer
12.05.2019
20:20:25
если ты хочешь двунаправленную передачу данных, то надо сделать два пайпа, получить два входных конца и два выходных

Dan
12.05.2019
20:20:32
Oleg
12.05.2019
20:21:10
Я просто видел в примере, как сделали file_descriptor, который может и читать, и писать, я хотел сделать такой же

Aragaer
12.05.2019
20:21:54
мм, наверно это можно как-то сделать, объединив два дескриптора в один file-like object

https://docs.python.org/3/library/io.html#io.BufferedRWPair

вот этой штукой можно

Slam! 538
12.05.2019
20:23:08
А скажите, где может быть полезна os.pipe()

Aragaer
12.05.2019
20:24:34
ну вот тут обсуждали - "надо ждать кучу разных источников эвентов, начинается асинхронщина"

и я сказал - "ну сделать мелкие треды, каждый из которых ждет свой источник, а события засовывает в нормальный канал, который мэйнтред уже через селект/полл ждет"

Oleg
12.05.2019
20:29:14
мм, наверно это можно как-то сделать, объединив два дескриптора в один file-like object
А если у меня есть процесс, в который мне нужно stdin передать, чтобы процесс с него читал - а я в него писал. И stdout, чтобы процесс в него писал, а я с него читал

Aragaer
12.05.2019
20:29:48
делаешь два пайпа и перевязываешь как надо, да

но это будет четыре разных файловых дескриптора

собственно два у тебя и два у него

ты можешь засунуть два своих в buffered rw pair, если хочется

Oleg
12.05.2019
20:30:48
но это будет четыре разных файловых дескриптора
Ну вот я их четыре и попытался сделать, только на одном пайпе) Понял, сейчас попробую, пока решение в голове сразу не появилось

Admin
ERROR: S client not available

Aragaer
12.05.2019
20:31:12
ща, секунду

Google
Oleg
12.05.2019
20:31:16
ты можешь засунуть два своих в buffered rw pair, если хочется
Попробую на пайпах пока, мне полезнее будет понять, как это работает)

Aragaer
12.05.2019
20:32:22
короче есть мои модули yet-another-io-channels и runner. Первый дает абстракцию над пайпами и сокетами (и как раз это один "канал" в обе стороны), а второй его использует для связи с запущенными процессами

yet-another-runner

https://github.com/aragaer/runner и https://github.com/aragaer/channels

в раннере есть примеры использования

ну и понятно можно исходники посмотреть

правда мои channels не работают под виндой, потому что мне просто не на чем проверить и запилить соответствующий код 8)

Oleg
12.05.2019
20:35:02
Aragaer
12.05.2019
20:35:17
да, модули есть на pypi, можно их ставить

https://pypi.org/project/yet-another-io-channels-library/ и https://pypi.org/project/yet-another-runner/

https://github.com/aragaer/channels/blob/master/channels/testing.py - ну и кстати вот как раз использование os.pipe

и "объединение" четырех дескрипторов в два двунаправленных канала

Oleg
12.05.2019
20:50:37
и "объединение" четырех дескрипторов в два двунаправленных канала
конструктор PipeChanel принимает на вход дескрипторы?

Aragaer
12.05.2019
20:51:09
да, номера дескрипторов - целые числа. Такие же, как возвращает os.pipe

Oleg
12.05.2019
21:09:32
да, номера дескрипторов - целые числа. Такие же, как возвращает os.pipe
https://github.com/aragaer/channels/blob/master/channels/channel.py#L83 Эти штуки для неблокирующей операции чтения?

Aragaer
12.05.2019
21:10:03
да

Oleg
12.05.2019
21:11:59
да
А они только для unix, по ходу, работают(

Aragaer
12.05.2019
21:13:17
ну да, я же сказал

https://github.com/aragaer/channels/issues/1

вот я даже сам завел issue, потому что у меня нет винды, чтобы это сделать

Google
Oleg
12.05.2019
21:17:55
вот я даже сам завел issue, потому что у меня нет винды, чтобы это сделать
Если fcntl только делает неблокирующее чтение - то можно отказаться в пользу select

Я попробую использовать на винде, когда загружусь под ней)

F̦̮̦͍́ o̹̟̩r̨̮͈ ̘͕̥͓d̙͓̀ ̖̱̟en͖͍̼̘̺̣̘
12.05.2019
21:18:28
я могу одновременно задать тип переменной и дефолтное значение? типо def foo(bar=10:int)

Руденко Ілля
12.05.2019
21:18:32
Тут можно тупые вопросы задавать?

F̦̮̦͍́ o̹̟̩r̨̮͈ ̘͕̥͓d̙͓̀ ̖̱̟en͖͍̼̘̺̣̘
12.05.2019
21:18:47
Руденко Ілля
12.05.2019
21:18:49
Что тут не так?

Страница 9009 из 9768