Google API与python Celery Tasks不兼容吗?

我有一个django项目,试图执行一些芹菜工人在后台执行任务以更新我的模型。我可以执行基本任务(将.delay()添加到视图中的方法末尾)。 ),但无法执行google api调用。 如果不是延迟任务,并且可以完美运行并更新我的模型,我可以执行google API调用。制作.delay()并作为任务添加到celery队列后,我在底部出现ssl错误。

调用api并显示结果的简单任务:工作

@task()
def simple_api_call():
r1=requests.get('https://jsonplaceholder.typicode.com/todos/1')
rj1=r1.json()
print(rj1))]

调用GOOGLE(youtube)api并显示结果的简单任务:SSL错误

@task
def google_api_call()
r1=requests.get('https://www.googleapis.com/youtube/v3/commentThreads?part=snippet%2Creplies&allThreadsRelatedToChannelId=UCQMZZMfz0D1RueGzcYLd87Q&searchTerms=love&key=MYKEY')
rj1=r1.json()
print(rj1))]

您可以在此处测试google api /获取get请求的网址(只需取消选择api和oauth: https://developers.google.com/youtube/v3/docs/commentThreads/list?apix_params=%7B%22part%22%3A%22snippet%2Creplies%22%2C%22allThreadsRelatedToChannelId%22%3A%22UCQMZZMfz0D1RueGzcYLd87Q%22%2C%22searchTerms%22%3A%22love%22%7D

工作者执行Google api调用时发生SSL错误。

INFO/MainProcess] Received task: todo.tasks.update_comments[ae9bebfe-4b3c-46ec-b197-0ffa56847f30]

[2019-10-31 05:33:52,652: ERROR/ForkPoolWorker-2] Task todo.tasks.update_comments[ae9bebfe-4b3c-46ec-b197-0ffa56847f30] raised unexpected: SSLError(MaxRetryError('HTTPSConnectionPool(host='www.googleapis.com',port=443): Max retries exceeded with url: /youtube/v3/commentThreads?part=replies%2Csnippet&allThreadsRelatedToChannelId=UC_EyncGJh2QuQHhcfuDWL6g&searchTerms=%23vi&maxResults=100&order=time&key=xxxmyapikey (Caused by SSLError(SSLError("bad handshake: SysCallError(54,'ECONNRESET')")))'))
Traceback (most recent call last):
File "/Users/tylervanzo/Desktop/trydjango/lib/python3.7/site-packages/urllib3/contrib/pyopenssl.py",line 485,in wrap_socket
cnx.do_handshake()
File "/Users/tylervanzo/Desktop/trydjango/lib/python3.7/site-packages/OpenSSL/SSL.py",line 1915,in do_handshake
self._raise_ssl_error(self._ssl,result)
File "/Users/tylervanzo/Desktop/trydjango/lib/python3.7/site-packages/OpenSSL/SSL.py",line 1639,in _raise_ssl_error
raise SysCallError(errno,errorcode.get(errno))
OpenSSL.SSL.SysCallError: (54,'ECONNRESET')

During handling of the above exception,another exception occurred:

Traceback (most recent call last):
File "/Users/tylervanzo/Desktop/trydjango/lib/python3.7/site-packages/urllib3/connectionpool.py",line 672,in urlopen
chunked=chunked,File "/Users/tylervanzo/Desktop/trydjango/lib/python3.7/site-packages/urllib3/connectionpool.py",line 376,in _make_request
self._validate_conn(conn)
File "/Users/tylervanzo/Desktop/trydjango/lib/python3.7/site-packages/urllib3/connectionpool.py",line 994,in validate_conn
conn.connect()
File "/Users/tylervanzo/Desktop/trydjango/lib/python3.7/site-packages/urllib3/connection.py",line 394,in connect
ssl_context=context,File "/Users/tylervanzo/Desktop/trydjango/lib/python3.7/site-packages/urllib3/util/ssl.py",line 370,in ssl_wrap_socket
return context.wrap_socket(sock,server_hostname=server_hostname)
File "/Users/tylervanzo/Desktop/trydjango/lib/python3.7/site-packages/urllib3/contrib/pyopenssl.py",line 491,in wrap_socket
raise ssl.SSLError("bad handshake: %r" % e)
ssl.SSLError: ("bad handshake: SysCallError(54,'ECONNRESET')",)

使用Redis作为代理 到目前为止,这是我的芹菜配置

WSGI_APPLICATION = 'trydjango.wsgi.application'
CELERY_BROKER_URL = 'redis://127.0.0.1:6379/0'
BROKER_TRANSPORT = 'redis'
CELERY_RESULT_BACKEND = 'django-db'
CELERY_TIMEZONE = 'Asia/Makassar'
xiaojiissb 回答:Google API与python Celery Tasks不兼容吗?

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/3162905.html

大家都在问