0
我正在使用delayed_jobs在後臺運行任務。在本地主機上工作,但在Heroku上失敗
我開始使用ajax的任務,工作人員獲取一些uuid並寫入以緩存任務的狀態和結果。
然後我使用另一個Ajax輪詢每秒鐘,看看我是否有結果。
它在我的本地主機上運行良好,但是當我上傳到heroku時,它不會。
我檢查了日誌,我可以看到工作人員可以讀取它已經寫入的緩存,但是當主線程嘗試訪問它時它是空的。
我正在使用瘦服務器,memcachier和dalli。
這是用於寫入到高速緩存的代碼:
def self.get_meta_info(link_url,job_uuid) begin #.......... result = { title: "stuff here..." } #.......... Rails.cache.write({job_uuid: job_uuid,type: 'result'},result.to_json) Rails.cache.write({job_uuid: job_uuid,type: 'status'},'success') #the next to lines return the data in the logs Rails.logger.info("get_meta_info written to hash at #{job_uuid}") Rails.logger.info("get_meta_info result for #{job_uuid} was: #{Rails.cache.read({job_uuid: job_uuid,type: 'result'})}") rescue Exception => ex Rails.cache.write({job_uuid: job_uuid,type: 'result'},ex) Rails.cache.write({job_uuid: job_uuid,type: 'status'},'error') end end
這是服務器端代碼我使用的輪詢:
def get_meta_info_result job_uuid = params[:job_uuid] status = Rails.cache.read({job_uuid: job_uuid,type: 'status'}) #the next to lines return nothing in the logs Rails.logger.info("nlp_provider_controller.get_meta_info_result for uuid #{job_uuid} read status #{status}") Rails.logger.info("nlp_provider_controller.get_meta_info_result for uuid #{job_uuid} read result #{Rails.cache.read({job_uuid: job_uuid,type: 'result'})}") respond_to do |format| if status=='success' format.json {render json: Rails.cache.read({job_uuid: job_uuid,type: 'result'})} elsif status=='error' format.json{render :nothing => true, status: :no_content } else format.json{render :nothing => true, status: :partial_content } end end
I(它是由AJAX每秒調用)不知道如何解決這個問題。
坦克你!