Skip to content

在异步请求中,webuiapi.py中的async_post 方法中session.post没将header传过去,导致通过api token方式无法用异步调用。 #185

@ak18cn

Description

@ak18cn
api = webuiapi.WebUIApi(baseurl=SD_BASE_URL)  
api.session.headers.update({'Authorization': 'Bearer ' +SD_ACCESS_TOKEN})   
api.txt2img(,,use_async=True) #Authorization failed
api.txt2img(,,use_async=False) #OK

#webuiapi.py:

def post_and_get_api_result(self, url, json, use_async):
        if use_async:
            import asyncio

            return asyncio.ensure_future(self.async_post(url=url, json=json))
        else:
            response = self.session.post(url=url, json=json)
            return self._to_api_result(response)

    async def async_post(self, url, json):
        import aiohttp

        async with aiohttp.ClientSession(timeout=aiohttp.ClientTimeout()) as session:
            infinite_timeout = aiohttp.ClientTimeout(total=None)
            auth = aiohttp.BasicAuth(self.session.auth[0], self.session.auth[1]) if self.session.auth else None
            async with session.post(url, json=json, auth=auth, timeout=infinite_timeout) as response: # infinite_timeout timeout here for timeout fix
                return await self._to_api_result_async(response)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions