mirror of
https://github.com/NovaOSS/nova-api.git
synced 2024-11-25 19:03:57 +01:00
Compare commits
6 commits
bea0cecdd3
...
15f98d8da8
Author | SHA1 | Date | |
---|---|---|---|
15f98d8da8 | |||
251be4f6e5 | |||
5f13f9b222 | |||
751ab940b9 | |||
4b02125574 | |||
a9f817b05e |
31
.github/workflows/tests.yml
vendored
Normal file
31
.github/workflows/tests.yml
vendored
Normal file
|
@ -0,0 +1,31 @@
|
|||
name: Python Tests
|
||||
|
||||
on: [pull_request]
|
||||
|
||||
jobs:
|
||||
test:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
- name: Checkout code
|
||||
uses: actions/checkout@v2
|
||||
|
||||
- name: Set up Python
|
||||
uses: actions/setup-python@v2
|
||||
with:
|
||||
python-version: 3.x
|
||||
|
||||
- name: Install dependencies
|
||||
run: |
|
||||
python -m pip install --upgrade pip
|
||||
pip install -r requirements.txt
|
||||
|
||||
- name: Start API server
|
||||
run: |
|
||||
python run
|
||||
|
||||
- name: Wait for API server to start
|
||||
run: sleep 10 # We can adjust this sleep duration as needed. idk how long the server takes to start
|
||||
|
||||
- name: Run tests
|
||||
run: python tests
|
|
@ -36,7 +36,7 @@ Returns True if the message violates the policy, False otherwise.
|
|||
}
|
||||
)
|
||||
|
||||
async with aiohttp.ClientSession(connector=proxies.default_proxy.connector) as session:
|
||||
async with aiohttp.ClientSession(connector=proxies.get_proxy().connector) as session:
|
||||
try:
|
||||
async with session.request(
|
||||
method=req.get('method', 'POST'),
|
||||
|
|
|
@ -103,60 +103,6 @@ class ProxyLists:
|
|||
self.get_random = Proxy(url=random_proxy)
|
||||
self.connector = aiohttp_socks.ChainProxyConnector.from_urls(proxies_in_files)
|
||||
|
||||
# ================================================================================================================================ #
|
||||
|
||||
# Proxy tests
|
||||
# Can be useful if you want to troubleshoot your proxies
|
||||
|
||||
def test_httpx_workaround():
|
||||
import httpx
|
||||
|
||||
print(default_proxy.proxies)
|
||||
|
||||
# this workaround solves the RNDS issue, but fails for Cloudflare protected websites
|
||||
with httpx.Client(proxies=default_proxy.proxies, headers={'Host': 'checkip.amazonaws.com'}) as client:
|
||||
return client.get(
|
||||
f'http://{socket.gethostbyname("checkip.amazonaws.com")}/',
|
||||
).text.strip()
|
||||
|
||||
def test_requests():
|
||||
import requests
|
||||
|
||||
print(default_proxy.proxies)
|
||||
|
||||
return requests.get(
|
||||
timeout=5,
|
||||
url='https://checkip.amazonaws.com/',
|
||||
proxies=default_proxy.urls
|
||||
).text.strip()
|
||||
|
||||
async def test_aiohttp_socks():
|
||||
async with aiohttp.ClientSession(connector=default_proxy.connector) as session:
|
||||
async with session.get('https://checkip.amazonaws.com/') as response:
|
||||
html = await response.text()
|
||||
return html.strip()
|
||||
|
||||
async def streaming_aiohttp_socks():
|
||||
async with aiohttp.ClientSession(connector=default_proxy.connector) as session:
|
||||
async with session.get('https://httpbin.org/get', headers={
|
||||
'Authorization': 'x'
|
||||
}) as response:
|
||||
json = await response.json()
|
||||
return json
|
||||
|
||||
async def text_httpx_socks():
|
||||
import httpx
|
||||
from httpx_socks import AsyncProxyTransport
|
||||
|
||||
print(default_proxy.url_ip)
|
||||
|
||||
transport = AsyncProxyTransport.from_url(default_proxy.url_ip)
|
||||
async with httpx.AsyncClient(transport=transport) as client:
|
||||
res = await client.get('https://checkip.amazonaws.com')
|
||||
return res.text
|
||||
|
||||
# ================================================================================================================================ #
|
||||
|
||||
def get_proxy() -> Proxy:
|
||||
"""Returns a Proxy object. The proxy is either from the proxy list or from the environment variables.
|
||||
"""
|
||||
|
@ -170,10 +116,3 @@ def get_proxy() -> Proxy:
|
|||
username=os.getenv('PROXY_USER'),
|
||||
password=os.getenv('PROXY_PASS')
|
||||
)
|
||||
|
||||
if __name__ == '__main__':
|
||||
# print(test_httpx())
|
||||
# print(test_requests())
|
||||
# print(asyncio.run(test_aiohttp_socks()))
|
||||
print(asyncio.run(streaming_aiohttp_socks()))
|
||||
# print(asyncio.run(text_httpx_socks()))
|
||||
|
|
18
requirements.txt
Normal file
18
requirements.txt
Normal file
|
@ -0,0 +1,18 @@
|
|||
aiohttp==3.8.5
|
||||
aiohttp_socks==0.8.0
|
||||
dhooks==1.1.4
|
||||
fastapi==0.101.0
|
||||
httpx==0.24.1
|
||||
motor==3.2.0
|
||||
openai==0.27.8
|
||||
providers==0.0.2
|
||||
pydantic==2.1.1
|
||||
pymongo==4.4.1
|
||||
python-dotenv==1.0.0
|
||||
python_socks==2.3.0
|
||||
pytz==2023.3
|
||||
PyYAML==6.0.1
|
||||
rich==13.5.2
|
||||
setuptools==65.5.1
|
||||
starlette
|
||||
tiktoken==0.4.0
|
|
@ -64,6 +64,8 @@ def test_library():
|
|||
messages=MESSAGES
|
||||
)
|
||||
|
||||
print(completion)
|
||||
|
||||
return completion['choices'][0]['message']['content']
|
||||
|
||||
def test_library_moderation():
|
||||
|
|
Loading…
Reference in a new issue