Skip to content

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

Open
@ak18cn

Description

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)

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

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