Getting TypeError: can't pickle SSLContext objects in Using Ray

Viewed 687

I am trying to experiment with the Ray library for parallel processing some of my functions to get output faster. In my local machine, it works ok in my cloud instance it is showing error

TypeError                                 Traceback (most recent call last)
<ipython-input-14-1941686e1604> in <module>
      4  #   datalist=f1.result()
      5 
----> 6 datalist_rayval=Customer_Merchant_value_pass.remote(customerlist)
      7 #datalist=ray.get(datalist_rayval)
      8 

~/anaconda3/lib/python3.7/site-packages/ray/remote_function.py in _remote_proxy(*args, **kwargs)
     93         @wraps(function)
     94         def _remote_proxy(*args, **kwargs):
---> 95             return self._remote(args=args, kwargs=kwargs)
     96 
     97         self.remote = _remote_proxy

~/anaconda3/lib/python3.7/site-packages/ray/remote_function.py in _remote(self, args, kwargs, num_return_vals, is_direct_call, num_cpus, num_gpus, memory, object_store_memory, resources, max_retries)
    168             # first driver. This is an argument for repickling the function,
    169             # which we do here.
--> 170             self._pickled_function = pickle.dumps(self._function)
    171 
    172             self._function_descriptor = PythonFunctionDescriptor.from_function(

~/anaconda3/lib/python3.7/site-packages/ray/cloudpickle/cloudpickle_fast.py in dumps(obj, protocol, buffer_callback)
     70         cp = CloudPickler(file, protocol=protocol,
     71                           buffer_callback=buffer_callback)
---> 72         cp.dump(obj)
     73         return file.getvalue()
     74 

~/anaconda3/lib/python3.7/site-packages/ray/cloudpickle/cloudpickle_fast.py in dump(self, obj)
    615     def dump(self, obj):
    616         try:
--> 617             return Pickler.dump(self, obj)
    618         except RuntimeError as e:
    619             if "recursion" in e.args[0]:






TypeError: can't pickle SSLContext objects

My Ray decorated code is

@ray.remote
def Prefer_Attachment_query2(listval):
    customer_wallet=listval[0]
    merchant_wallet=listval[1]
    #print(x,y)
    prefquery="""MATCH (p1:CUSTOMER {WALLETID: '%s'})
                 MATCH (p2:MERCHANT {WALLETID: '%s'})
                 RETURN gds.alpha.linkprediction.preferentialAttachment(p1, p2,{relationshipQuery: "PAYMENT"}) as score"""%(customer_wallet,merchant_wallet)
    #print(prefquery)
    return prefquery


from timeit import default_timer as timer
import itertools
@ray.remote
def Customer_Merchant_value_pass(text):
    minicustomer=text
    begin=timer()
    sum_val=0
    list_avg_score=[]
    list_category_val=[]
    dict_list=[]
    #Avg_score=0
    with graphdriver.session()as session:
        for i in itertools.islice(minicustomer,len(minicustomer)):
            for key in list_of_unique_merchants:
                print("Here at list_of_unique_merchants customer value is ",i)
                print("BMCC_Code",key)
                valuelist=list_of_unique_merchants[key]
                #print("Uniquelistfor:",key,valuelist)
                for j in  valuelist:

                    #print("list len",len(valuelist))
                    #print("Here the iner of value list ",i)
                          #print("--------------------------------")
                    #print([i,j])
                    pref_attach_score_rayvalue=Prefer_Attachment_query2.remote([i,j])
                    pref_attach_score=ray.get(pref_attach_score_rayvalue)
                    #print(pref_attach_score)

                    result=session.run(pref_attach_score)
                    for line in result:
                        #print(line["score"])
                        sum_val=sum_val+line["score"]
                    #Avg_score=sum_val/len(valuelist) 


                Totalsumval=sum_val
                print("Totalsum",Totalsumval)
                Avg_score=sum_val/len(valuelist)
                print("Avg_score",Avg_score)
                sum_val=0
                list_avg_score.append(Avg_score)
                list_category_val.append(key)
                avg_score_list=list_avg_score
                category_list=list_category_val


                #print("sumval is now",sum_val)



                #print(result)
            max_dictionary  =MaxValue_calc(i,category_list,avg_score_list) 
            #MaxValue_calc(i,category_list,avg_score_list) 

            print("max_dicitionary",max_dictionary)
            dict_list.append(max_dictionary)
            rowlist=dict_list
            print('appended list',rowlist)
            print('process',len(rowlist))

            #dict_list=[]
            list_avg_score=[] 
            list_category_val=[]

            #print("rowlist", rowlist)
            #print("list_category_val is now",list_category_val)

            #print("for",i," category AVG scores is now ",category_list)


            #print("list_avg_score is now",list_avg_score)
            #print("for",i," category AVG scores is now ",avg_score_list)



    session.close()
    end=timer()
    print("Total time   :",(end-begin))
    return rowlist



datalist_rayval=Customer_Merchant_value_pass.remote(customerlist)
datalist=ray.get(datalist_rayval)

why I am getting this error. and kindly help me to solve this

0 Answers
Related