芹菜、Django、RabbitMQ(或Redis)和RPC的Backlog错误
我有一个django应用程序,有时需要执行数百万个API请求。为了加快速度,我使用芹菜发送请求,并在消费之前等待响应 我曾尝试使用Redis作为代理和后端设置芹菜:芹菜、Django、RabbitMQ(或Redis)和RPC的Backlog错误,rabbitmq,celery,django-celery,Rabbitmq,Celery,Django Celery,我有一个django应用程序,有时需要执行数百万个API请求。为了加快速度,我使用芹菜发送请求,并在消费之前等待响应 我曾尝试使用Redis作为代理和后端设置芹菜: CELERY_BROKER_URL = 'redis://localhost:6379' CELERY_RESULT_BACKEND = 'redis://localhost:6379' CELERY_ACCEPT_CONTENT = ['application/json'] CELERY_RESULT_SERIALIZER = '
CELERY_BROKER_URL = 'redis://localhost:6379'
CELERY_RESULT_BACKEND = 'redis://localhost:6379'
CELERY_ACCEPT_CONTENT = ['application/json']
CELERY_RESULT_SERIALIZER = 'json'
CELERY_TASK_SERIALIZER = 'json'
这给了我一个错误:backloglimited:54c6d0ce-318d-461b-b942-5edcd258b5f1
然后我改为RabbitMQ代理和RPC后端:
CELERY_BROKER_URL = 'amqp://guest@localhost//'
CELERY_RESULT_BACKEND = 'rpc://'
CELERY_ACCEPT_CONTENT = ['application/json']
CELERY_RESULT_SERIALIZER = 'json'
CELERY_TASK_SERIALIZER = 'json'
同样的错误
我的API调用代码非常经典:
我有一个url\u chunks=[[url1,url2…url1000],[url1,url2…url1000].
这是必需的,因为API速率限制为每分钟1000次(在每个调用组结束时,我睡眠1分钟)
我想所有的url调用/响应都被缓存在某个地方,并且超出了内存?但我认为RPC不会发生这种情况。我曾想过使用purge(),但也不起作用,因为RPC不支持它
有人知道怎么处理吗?我目前正在MacOS上的开发环境中运行,打算部署到Ubuntu
谢谢
for urls in urls_chunks:
returned_data = []
for url in urls:
result = call_api.delay(url)
returned_data.append(result)
for response in returned_data:
result = response.result
## Do something with the result
sleep(60)