Как я могу получить доступ к сценарию и именам в качестве примера в Огурце?

Вот мое решение.

class Session:
    def __init__(self, headers):
        self._headers = headers
        self._session = requests.Session()
        self._async_session = None

    async def _init(self):
        self._session = aiohttp.ClientSession(headers=headers)

    async def async_request(self, url):
       while True:
            try:
                async with self._async_session.get(url) as resp:
                    resp.raise_for_status()
                    return await resp.text()
            except aiohttp.client_exceptions.ClientError:
                 #retry or raise
            except AttributeError:
                if isinstance(self._async_session, aiohttp.ClientSession):
                    raise
                await self._init()

    def request(self, url):
        return self._session.get(url).text

    async def close(self):
        if isinstance(self._async_session, aiohttp.ClientSession):
            await self._session.close()

async def main():
    session = Session({})
    print(await session.async_request('https://httpstat.us/200')
    await session.close()

asyncio.run(main())

Я могу инициализировать класс Session и делать как синхронные, так и асинхронные запросы. Мне не нужно явно вызывать await session._init() для инициализации self._async_session, как, когда вызывается session._async_request и self._async_session - Нет, тогда будет вызван await session._init() и запрос будет повторен.

9
задан Nigel Thorne 19 March 2009 в 23:14
поделиться

2 ответа

Найденный им.. (с некоторой справкой от Tim Walker)

Before do |scenario|
 puts "Before Scenario: #{scenario.to_sexp[2]}"
 .
 .
 .
end

Ваш SExpression может отличаться, таким образом, стоит сделать a scenario.to_sexp.inspect видеть, каково то дерево.

Aslak стремится постараться не выставлять свойства на его классах (который является решением, с которым я, оказывается, соглашаюсь, таким образом, я рад сделать эту работу вокруг).

8
ответ дан 4 December 2019 в 21:12
поделиться

Более серьезный ответ (или по крайней мере, предложение): используйте отражение рубина, чтобы попытаться найти то, что Вы ищете. Захватите, вероятно, объекты, узнайте, какие методы они имеют и видят, можно ли найти его. Например:

File.open('happy_hunting.log','a') { |f|
    f.print "Scenario supports: #{(scenario.methods - Object.methods).inspect}\n"
    }

и затем повторите его для выяснения то, что то, где.

Другое предложение, посмотрите на источник.

2
ответ дан 4 December 2019 в 21:12
поделиться
Другие вопросы по тегам:

Похожие вопросы: