Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 芹菜共享_任务参数解析错误_Python_Django_Rabbitmq_Celery - Fatal编程技术网

Python 芹菜共享_任务参数解析错误

Python 芹菜共享_任务参数解析错误,python,django,rabbitmq,celery,Python,Django,Rabbitmq,Celery,我正在使用芹菜4.2.0和Django来调度rabbitmq中的新任务,在解析参数时它会随机失败。 我的代码如下所示: for param in serializer.validated_data['parameters']: run_task.delay(param_name=param) 其中,参数是int的列表,并通过序列化程序验证来确保 @shared_task def run_task(param_name: int) -> None: obj= Obj

我正在使用芹菜4.2.0和Django来调度rabbitmq中的新任务,在解析参数时它会随机失败。 我的代码如下所示:

for param in serializer.validated_data['parameters']:
        run_task.delay(param_name=param)
其中,参数是int的列表,并通过序列化程序验证来确保

@shared_task
def run_task(param_name: int) -> None:
    obj= Obj.objects.filter(param=param_name)
    ...
在UTs下,当我调用此
run_task
cellery_task\u ALWAYS\u EAGER=True
时,一切正常。在真实环境中,此任务有时运行正常,有时因服务器错误而失败:

    File "/usr/lib/python3.6/site-packages/rest_framework/decorators.py", line 53, in handler
    return func(*args, **kwargs)
  File "/opt/app/compliance/jobs/views.py", line 30, in create_task
    run_task.delay(param_name=param)
  File "/usr/lib/python3.6/site-packages/celery/app/task.py", line 408, in delay
    return self.apply_async(args, kwargs)
  File "/usr/lib/python3.6/site-packages/celery/app/task.py", line 535, in apply_async
    **options
  File "/usr/lib/python3.6/site-packages/celery/app/base.py", line 741, in send_task
    with self.producer_or_acquire(producer) as P:
  File "/usr/lib/python3.6/site-packages/celery/app/base.py", line 876, in producer_or_acquire
    producer, self.producer_pool.acquire, block=True,
  File "/usr/lib/python3.6/site-packages/celery/app/base.py", line 1246, in producer_pool
    return self.amqp.producer_pool
  File "/usr/lib/python3.6/site-packages/celery/app/amqp.py", line 612, in producer_pool
    self.app.connection_for_write()]
  File "/usr/lib/python3.6/site-packages/kombu/utils/collections.py", line 34, in __getitem__
    h = eqhash(key)
  File "/usr/lib/python3.6/site-packages/kombu/utils/collections.py", line 25, in eqhash
    return o.__eqhash__()
  File "/usr/lib/python3.6/site-packages/kombu/connection.py", line 629, in __eqhash__
    repr(self.transport_options))
  File "/usr/lib/python3.6/site-packages/kombu/utils/collections.py", line 16, in __init__
    self.hashvalue = hash(seq)
TypeError: unhashable type: 'set'
我理解错误本身,但当我只传递一个简单且可解析的参数(非集合)时,它为什么会出现在这里。有人知道如何让它持续工作吗

谢谢

在失败的情况下,您能打印
param
的值吗?在发送之前,我有一行:
LOGGER.info('sending request for param%d',param)
,它会生成
sending request for param 17